如何从调用首选项中获取密钥



这是我的preference.xml的一部分。当用户单击其中任何一个时,其中一个首选项都会调用同一个活动changePWEmail

   <PreferenceCategory
        android:title="Security">
        <Preference
            android:title="Change email"
            android:summary="Option to change email"
            android:key="pref_security_email">
            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.test"
                android:targetClass="com.test.changePWEmail"/>
        </Preference>
        <Preference
            android:title="Change password"
            android:summary="Option to change password"
            android:key="pref_security_password">
            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.test"
                android:targetClass="com.test.changePWEmail"/>
        </Preference>
    </PreferenceCategory>

changePWEmail类中,我如何获取键值("pref_security_email"或"pref_seecurity_password"),以便我可以执行适当的操作,无论是电子邮件还是密码更改请求?我将感谢任何帮助。谢谢

   <PreferenceCategory
        android:title="Security">
        <Preference
            android:title="Change email"
            android:summary="Option to change email"
            android:key="pref_security_email">
            <intent
                android:action="com.example.action.email"
                android:targetPackage="com.test"
                android:targetClass="com.test.ChangePWEmailActivity"/>
        </Preference>
        <Preference
            android:title="Change password"
            android:summary="Option to change password"
            android:key="pref_security_password">
            <intent
                android:action="com.example.action.password"
                android:targetPackage="com.test"
                android:targetClass="com.test.changePWEmailActivity"/>
        </Preference>
    </PreferenceCategory>

在您的活动中:

if (getIntent() != null)
  if ("com.test.action.email".equals(activtiy.getIntent().getAction())) {
  } else if ("com.test.action.password".equals(activtiy.getIntent().getAction())) {
  } else {
  }

在您的清单中:

    <activity
        android:name="com.test.ChangePWEmailActivity" >
        <intent-filter>
            <action android:name="com.test.action.email" />
            <action android:name="com.test.action.password" />
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.Launcher" />
        </intent-filter>
    </activity>

谷歌的Android意图和互动。

我使用的是Android Studio最新的测试版和

activtiy.getIntent()

只是提出了一个错误。基于momosxp的答案,这是我的版本,它经过了测试,100%有效。。。在preference.xml…中

    <PreferenceCategory
        android:title="Security">
        <Preference
            android:title="Change email"
            android:summary="Option to change email">
            <intent
                android:action="email"
                android:targetPackage="com.test"
                android:targetClass="com.test.ChangePWEmailActivity"/>
        </Preference>
        <Preference
            android:title="Change password"
            android:summary="Option to change password">
            <intent
                android:action="password"
                android:targetPackage="com.test"
                android:targetClass="com.test.changePWEmailActivity"/>
        </Preference>
    </PreferenceCategory>

在活动中。。。

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_pwemail_change);
        TextView txvTitle = (TextView) findViewById(R.id.txvChangeWhat);
        EditText txtOld = (EditText) findViewById(R.id.txtOldPWEmail);
        EditText txtNew = (EditText) findViewById(R.id.txtNewPWEmail);
        EditText txtConfirm = (EditText) findViewById(R.id.txtConfirmPWEmail);
        Button btnCommit = (Button) findViewById(R.id.btnCommitChanges);
        String ia = getIntent().getAction();
        if (ia != null) {
            if ("email".equals(ia)){
                ChangeWhat = CHANGE_EMAIL;
            } else if ("password".equals(ia)){
                ChangeWhat = CHANGE_PASSWORD;
            }
        }
        switch (ChangeWhat){
            case CHANGE_EMAIL:

而且你不必对你的清单做任何事情。

相关内容

  • 没有找到相关文章

最新更新