Android在清除其他活动的同时推送新的活动

5
我有一系列的活动 A、B、C,完成后需要将新的活动 Y 推送到我的主屏幕。任务栈应该如下所示:
  • H
  • H->A
  • H->A->B
  • H->A->B->C
  • H->Y
我需要返回按钮能够从 C 返回到 B 或从 B 返回到 A,但当 C 完成时,我需要 Y 成为活动任务。从 Y 返回需要回到主屏幕 (H)。
谢谢。
2个回答

2

你可以使用标志 FLAG_ACTIVITY_CLEAR_TOP 启动一个活动 H,这将调用活动 H 的 onNewIntent() 方法。你可以在此意图中设置适当的额外信息,并使用它们启动 Activity Y


我认为这可能是“正确”的方法,当 EboMike 的方法引起道德愤怒的情绪消退后,我可能会尝试它。然而,现在已经是凌晨4点了,他的想法起作用了,所以可能要等到早上再试 =) - jamie

1

Jamie,你现在开始搞Android了?这可真是个可怕的想法!无论如何,finish()是从栈中移除活动时的好帮手。您可以多次调用它以从堆栈中弹出多个活动。

或者,您也可以通过在意图中传递FLAG_ACTIVITY_CLEAR_TOP标志来清除整个堆栈(但是听起来您想保留H,因此可能不是一个明智的选择)。

顺便说一句,我还没有尝试过FLAG_ACTIVITY_NEW_TASK,但这在您的情况下可能有效。在启动A之前通过它传递。这在您的情况下可能完全没有用处,所以请试验一下吧。

编辑:我稍微尝试了一下,多次调用finish()实际上并不能按预期工作。我通过使用FLAG_ACTIVITY_CLEAR_TOP启动H,然后立即随后启动Y(即在一个函数中两个startActivity调用)使其起作用。


我怎么才能得到A和B呢?对于C,getParent()为空。也许B和C应该是子活动?我考虑过保留对A和B的全局引用,但然后我的左手拿起了一支铅笔,刺伤了我的右手。此外,我现在在流血。(嗨!是的,我正在做Android开发,尽管我去年买的可怜的机器人大部分时间都没有使用。我做了很多iOS开发,但没怎么做安卓。) - jamie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接