这是我的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:
而且你不必对你的清单做任何事情。