【问题标题】:Android push a new activity while clearing othersAndroid 在清除其他活动的同时推送新活动
【发布时间】: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


    【解决方案1】:

    您可以使用标志 FLAG_ACTIVITY_CLEAR_TOP 启动一个 for activty H。这将调用活动 H 的 onNewIntent() 方法。您可以在此意图中设置适当的额外内容并使用它们来启动 Activity Y

    【讨论】:

    • 我认为这将是“正确”的做法,当 EboMikes 方法引起的士气愤怒时,我可能会尝试它。但是,它是凌晨 4 点,他的想法奏效了,所以它可能不得不等到早上 =)
    【解决方案2】:

    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 的东西,虽然我去年得到的可怜的 droid 大部分都没有使用。很多 iOS 开发,没有多少 droid。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多