如何使上传按钮返回到后台堆栈上的父活动?

时间:2013-01-17 11:48:29

标签: android navigation android-actionbar

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

  • 如果父活动的实例位于后台堆栈,请返回该父活动的最顶层实例。
  • 如果后台堆栈上没有父活动的实例,请创建一个新实例。

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

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

尝试在Manifest中为您的活动指定启动模式:launchMode =“singleInstance”或android:launchMode =“singleTop”,请查看此问题以获取更多信息Android launchmode="singleTask" does not work as expected

答案 1 :(得分:0)

  

如果父活动的实例位于后台堆栈,请返回该父活动的最顶层实例。

如果这是为了将后备堆栈清除到最顶层的实例,我最近解决了此问题,使用活动的onOptionsItemSelected()自定义向上导航并添加FLAG_ACTIVITY_CLEAR_TOP - 标记({ {3}})到Intent - 虽然只切换启动模式没有在我预期的后台堆栈中结束:

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

另请查看link