0

我想为向上按钮实现以下行为:

  • 如果父 Activity 的实例在后栈中,则返回到该父 Activity 的最顶层实例。
  • 如果后栈中没有父Activity的实例,则新建一个实例。

实际上,当我第一次阅读 up 和 back 之间的区别时,这种行为是我所期望的默认行为。但是,我现在已经看到,它NavUtils.navigateUpFromSameTask(this);总是创建父活动的一个新实例,而忽略了一个事实,即在后台堆栈上有一个现成的可用实例。

感谢您的任何建议。

4

2 回答 2

1

尝试在 Manifest android:launchMode="singleInstance" 或 android:launchMode="singleTop" 中为您的活动指定启动模式,查看此问题以获取更多信息Android launchmode="singleTask" 无法按预期工作

于 2013-01-17T11:55:17.603 回答
0

如果父 Activity 的实例在后栈中,则返回到该父 Activity 的最顶层实例。

如果这是为了将后台堆栈清除到这个最顶层的实例,我最近解决了这个问题,使用活动自定义向上导航并将onOptionsItemSelected()-FLAG_ACTIVITY_CLEAR_TOP标志(链接)添加到Intent- 而仅切换启动模式并没有结束在我期待的后堆栈中:

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    Intent parentActivityIntent = NavUtils.getParentActivityIntent(this);
    parentActivityIntent.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(parentActivityIntent);
}

也看看http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp

于 2014-01-27T16:57:07.377 回答