这是我的偏好.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”),以便我可以执行适当的操作,无论是电子邮件还是密码更改请求?我会感激任何帮助。感谢。
答案 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:
......而且你不需要对你的清单做任何事情。