从堆栈中删除中间活动

时间:2012-07-18 09:55:06

标签: android

如何实现此行为:

假设我有活动A

然后我开始流程并进行活动A,B,C,D

如果在D中成功,它将启动活动E,堆栈将为A,B,C,D,E

我想要的是堆栈是A,E所以B,C,D将从中间移除。

5 个答案:

答案 0 :(得分:2)

ArrayList<Activity> activities =new ArrayList<Activity>();

创建并将所有活动添加到此。当你需要关闭它们时输入:

activities.get(YOUR_ITEM_INDEX).finish();

我认为这样可以解决问题

让我知道结果

答案 1 :(得分:0)

从B完成B开始活动C时,如从C完成C开始D,现在开始E完成D.最后,你只有堆栈中的活动A和E.

答案 2 :(得分:0)

B,C,D和E应该从结果中的活动开始,并在OnActivityResult方法中完成。然后使用finish()覆盖E活动中的后退按钮(或者单击按钮时完成E活动)可以解决问题,当从E向后按时,您将返回到A

答案 3 :(得分:0)

您只需要确定我的活动可以采用的历史路径,并在用户执行应该“展开”我的活动堆栈的操作时调用finish()

您还可以在 AndroidManifest.xml 中查看FLAG_ACTIVITY_NO_HISTORY / FLAG_ACTIVITY_CLEAR_TOP或使用android:noHistory="true"

答案 4 :(得分:0)

请参阅http://developer.android.com/reference/android/content/Intent.html中的FLAG_ACTIVITY_CLEAR_TOP。它适合您的需求吗?