当我的筹码处于这种情况时:
A->B->C
如果我启动D活动,我希望活动堆栈变为:
A->D
请注意,活动C是一个对话框。
答案 0 :(得分:4)
以下是执行所需操作的步骤:
fromActivityC
并设置了标志FLAG_ACTIVITY_CLEAR_TOP
。现在在活动的创建中首先检查此布尔值“fromActivityC”,如果存在则启动活动D否则正常流程继续。
// following code can be used to get the boolean in the oncreate
boolean entrypoint=this.getIntent().getExtras().getBoolean("fromActivityC");
一个小解决方法,但希望它有所帮助
答案 1 :(得分:2)
有几种方法可以从堆栈中删除活动或阻止它堆叠:
要从堆叠中移除您的活动,只需致电finish()
,请参阅here。
您还可以在清单中实现以下属性:android:noHistory =“true”,用于阻止活动堆叠。
答案 2 :(得分:1)
有点hacky,但你可以在清理堆栈时启动活动A,然后启动活动D.
活动A 可能会出现片刻,然后消失
答案 3 :(得分:1)
您可以在启动ActivityB
时尝试完成ActivityC
,并在启动A时尝试在ActivityC
中完成相同的操作。
您的代码如下所示:
Intent i = new Intent(this.class.ActivityC);
startActivity(i);
ActivityB.finish();
答案 4 :(得分:0)
在回调C时,将消息传回A并从Acall结束开始你的D,这将完成B和C(因为C是B的一部分)。
答案 5 :(得分:0)
这是一个更好的解决方案,不依赖于评估Intent
中的A
内容:
使用标记FLAG_ACTIVITY_TASK_ON_HOME
你还应该看看其他标志Android Intent