【发布时间】:2011-08-25 09:41:15
【问题描述】:
我有一系列活动 A、B、C,完成后需要将新活动 Y 推送到我的家庭活动中。任务堆栈应如下所示。
- H
- H->A
- H->A->B
- H->A->B->C
- H->Y
我需要后退按钮才能从 C 返回到 B 或 B 返回到 A,但是 C 已“完成”我需要让 Y 成为活动任务。而来自 Y 的“返回”需要回到家 (H)。
谢谢。
【问题讨论】:
标签: android android-activity stack task back
我有一系列活动 A、B、C,完成后需要将新活动 Y 推送到我的家庭活动中。任务堆栈应如下所示。
我需要后退按钮才能从 C 返回到 B 或 B 返回到 A,但是 C 已“完成”我需要让 Y 成为活动任务。而来自 Y 的“返回”需要回到家 (H)。
谢谢。
【问题讨论】:
标签: android android-activity stack task back
您可以使用标志 FLAG_ACTIVITY_CLEAR_TOP 启动一个 for activty H。这将调用活动 H 的 onNewIntent() 方法。您可以在此意图中设置适当的额外内容并使用它们来启动 Activity Y
【讨论】:
Jamie,现在在做 Android 的东西吗?多么可怕的想法!无论如何,finish() 是您从堆栈中删除活动的朋友。您可以多次调用它以从堆栈中弹出多个活动。
或者,您也可以通过在您的意图中传递 FLAG_ACTIVITY_CLEAR_TOP 标志来擦除整个堆栈(但听起来您想保留 H,所以这可能不是一个明智的选择)。
顺便说一句,我没有玩过的一件事是 FLAG_ACTIVITY_NEW_TASK,但这可能适用于你的情况。在开始A之前通过它。不过,这在您的情况下可能完全没用,所以请尝试一下。
编辑:玩了一下,多次调用 finish() 实际上并没有按预期工作。我通过使用 FLAG_ACTIVITY_CLEAR_TOP 开始 H,然后立即使用 Y(即在一个函数中调用两个 startActivity)来使其工作。
【讨论】: