1

所以..让我们假设以下活动序列

A -> B -> C -> D -> E

如果我Action1在 EI 中执行该操作,只想从堆栈中删除 E 并返回 D。

另一方面,如果我Action2在 E 中做 The,我想从堆栈中删除 E 和 D 并返回到 C

怎么做 ?

以上序列是消息应用程序的简单实现,所以A是登录活动,B是个人资料活动,C显示好友请求列表,D显示所选人员表格C的个人资料,C中有2个按钮一个用于已批准,第二个用于取消请求,现在如果单击其中任何一个,它将带他到 E 那里是或否进行操作,如果否,它返回到选定人员的个人资料,是的,它应该返回到 C

4

5 回答 5

0

那么您可以做的是,当您从 A->B 调用finish();转到结束活动 A 时,对于 B->C 也是如此,即结束 B。因此,当您到达 E 时,只有 E 将处于活动状态。所以现在当你这样做时Action1,调用活动 D,当你Action2调用活动 C 时。这次调用finish();E。这正是你想要的。

于 2013-07-17T04:36:16.650 回答
0

如果Action1什么都不做,因为如果用户按下返回按钮,E将被删除并且您返回到D. 如果Action2,C以 flag开头Intent.FLAG_ACTIVITY_CLEAR_TOPDandE将从堆栈中清除

于 2013-07-17T04:40:15.973 回答
0

每次从一个 Activity 移动到另一个 Activity 时,您都可以使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 添加此标志。这将清除您之前的所有活动,以便在活动 E 中堆栈中没有活动。

于 2013-07-17T04:41:01.457 回答
0

如果它始终是要执行此类操作的最后一个活动,那么您可以启动最后一个活动以获得结果。因此,当 D 生成 E 时,请使用startActivityForResult (Intent intent, int requestCode)。稍后,当您在 E 中执行操作时,调用finish()E 并在此之前将结果代码传递给 D。根据该结果,您可以什么都不做(因此 D 将保持原样),或者您也可以调用finish()D。

于 2013-07-17T04:42:34.623 回答
0

如果堆栈是指最近的应用程序,那么要清除最近的应用程序,您可以添加

android:excludeFromRecents="true" 

在 manifest.xml 中的活动标签内

于 2013-07-17T04:45:57.370 回答