如何从呼叫首选项中获取密钥

时间:2014-11-11 12:37:24

标签: android call preferences preferenceactivity

这是我的偏好.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_security_password”),以便我可以执行适当的操作,无论是电子邮件还是密码更改请求?我会感激任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

   <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>

google for Android意图和互动。

答案 1 :(得分:0)

我正在使用Android Studio最新测试版,

activtiy.getIntent()

刚刚提出错误。基于momosxp答案,所以这是我的版本,经过测试并100%正常工作...... 在preferences.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:

......而且你不需要对你的清单做任何事情。