2

如何实现此行为:

假设我有活动 A

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

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

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

4

5 回答 5

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

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

activities.get(YOUR_ITEM_INDEX).finish();

我认为这将解决问题

让我知道结果

于 2012-07-18T09:59:59.390 回答
0

B、C、D 和 E 应从结果中的活动开始,并在 OnActivityResult 方法中结束。然后用 finish() 覆盖 E 活动中的后退按钮(或单击按钮时仅完成 E 活动)就可以了,当从 E 按下返回时,您将移回 A

于 2012-07-18T09:59:47.043 回答
0

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

您还可以查看FLAG_ACTIVITY_NO_HISTORY / FLAG_ACTIVITY_CLEAR_TOPandroid:noHistory="true"在您的AndroidManifest.xml中使用。

于 2012-07-18T10:01:24.667 回答
0

请参阅http://developer.android.com/reference/android/content/Intent.htmlFLAG_ACTIVITY_CLEAR_TOP。它符合您的需求吗?

于 2012-07-18T10:02:14.643 回答
0

当从 B 开始活动 C 完成 B 时,就像从 C 开始 D 完成 C 一样,开始 E 现在完成 D 。最后,您将只有 Activity A 和 E 在堆栈中。

于 2012-07-18T09:58:58.617 回答