【发布时间】:2016-11-25 14:11:04
【问题描述】:
我有一些活动,例如 A、B、C、D 如何完成活动 D,清除回栈,避免返回活动 C,然后返回活动 B。 请不要故意从 C 开始 D 以获取结果并在 C 中的 onActivityResult 中,再次调用完成=)'因为完成()已被使用))
【问题讨论】:
标签: android android-activity stack back
我有一些活动,例如 A、B、C、D 如何完成活动 D,清除回栈,避免返回活动 C,然后返回活动 B。 请不要故意从 C 开始 D 以获取结果并在 C 中的 onActivityResult 中,再次调用完成=)'因为完成()已被使用))
【问题讨论】:
标签: android android-activity stack back
我不确定这种行为是需要永久基础还是有条件的。在第一种情况下,您可以在 D 清单活动声明中添加以下行:
android:parentActivityName="com.example.B"
在第二种情况下,您可以覆盖活动 D - onBackPressed() 方法并根据当前情况从此处启动 Activity B。
【讨论】:
您可以使用FLAG_ACTIVITY_CLEAR_TOP 标志。
在此处查看Android documentation。它实际上使用了您给出的确切示例:
如果设置了,并且正在启动的 Activity 已经在当前任务中运行,那么不会启动该 Activity 的新实例,而是关闭它之上的所有其他 Activity,并且此 Intent 将被传递到(现在在顶部)作为新 Intent 的旧活动。
例如,考虑由以下活动组成的任务:A、B、C、D。 如果 D 调用 startActivity() 的 Intent 解析为 活动B的组成部分,然后C和D将完成,B收到 给定的 Intent,导致堆栈现在是:A,B。
【讨论】: