“首选项”菜单中Android向上/向后导航的动态父活动
我对Android应用程序中的选项菜单有一个首选项活动。 我已经在操作栏上启用了向上导航,我需要返回到上一个调用选项菜单的活动。 对于首选项活动,我可以在清单中使用: android:parentActivityName=“mypackage.com.MainActivity” 但如何回到其他活动?从4个不同的活动中调用选项菜单“首选项”菜单中Android向上/向后导航的动态父活动,android,navigation,android-actionbar,preferences,Android,Navigation,Android Actionbar,Preferences,我对Android应用程序中的选项菜单有一个首选项活动。 我已经在操作栏上启用了向上导航,我需要返回到上一个调用选项菜单的活动。 对于首选项活动,我可以在清单中使用: android:parentActivityName=“mypackage.com.MainActivity” 但如何回到其他活动?从4个不同的活动中调用选项菜单 public class Prefs extends PreferenceActivity { @Override protected void onCreate(B
public class Prefs extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
ActionBar actionBar = getActionBar();
// Enabling Up / Back navigation
actionBar.setDisplayHomeAsUpEnabled(true);
}
}后退按钮的默认行为是,它将使您返回到呼叫活动。当用户导航应用程序时,系统维护活动的后堆栈。是否需要覆盖此功能?请更具体一些。用以下方法解决:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
}
return true;
}
确保您已在清单中声明父活动,如下所示
<activity
android:name="com.myapp.SetPreferenceActivity"
android:parentActivityName="com.myapp.MainActivity"
>
如果您想让“向上”按钮指向自定义活动,您可以使用一个intent
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent changeActivity = new Intent(this,OtherActivity.class);
startActivity(changeActivity);
return true;
}
return super.onOptionsItemSelected(item);
}
是的,但是我需要告诉ActionBar的back按钮返回调用活动(如设备的physic back按钮),这不会从当前任务向上导航。这只是关闭当前活动。我不想总是返回到主活动。如果我从SomeActivity.class调用菜单,我想返回到SomeActivity.class。。。如果我从OtherActivity.class调用菜单,我想返回到OtherActivity.classI我编辑了我的答案,以包含使用意图转到自定义活动的选项我需要在运行时知道我来自的活动,以便返回到调用菜单的活动
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent changeActivity = new Intent(this,OtherActivity.class);
startActivity(changeActivity);
return true;
}
return super.onOptionsItemSelected(item);
}