在Android中操纵活动堆栈的后面

时间:2010-11-12 11:30:26

标签: android

  

可能重复:
  Removing an activity from the history stack

假设我的堆栈上有三个活动,例如A→B→C 我想终止B并用活动D替换它,这样堆栈看起来像这样:A→D→C 预期的效果是具有“屏幕选择器”活动C.它在活动B之上打开,提供许多可供选择的东西,当用户点击一个时,它关闭,显示所选择的屏幕。我可以使用overridePendingTransition取消打开动画,但仅凭这一点无法通过关闭选择器界面来帮助我揭示活动。

Android中有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用FLAG_ACTIVITY_NO_HISTORY标志启动B.因此它不会进入堆栈,C将决定启动D或B.它是否适合您的需求?

答案 1 :(得分:1)

另一个idia))B和D是相同的活动(!),其具有B模式和具有不同布局的D模式。当它处于B模式时,它使用StartActivityForResult()启动C.返回时,它决定要膨胀的布局。很简单吧?

答案 2 :(得分:1)

我有两次真正的冬天开始。第一个不完美但很容易实现;第二个应该给出预期的结果,但更难实施。

一种是使用FLAG_ACTIVITY_REORDER_TO_FRONT和FLAG_ACTIVITY_PREVIOUS_IS_TOP开始活动。这将为任何现有活动提供预期的行为。如果活动不在堆栈的后面,特别是在它的第一次启动时,它仍然不起作用。

另一种可能性 - 我还没有实现 - 是创建一个非常像TabHost的ActivityManager并将意图传递给这个人。然后它负责在其onNewIntent()方法中加载下一个活动。这应该有效,并允许单独开展单独的活动。