【问题标题】:Moving between activities: killing two previous activities在活动之间移动:杀死之前的两个活动
【发布时间】:2011-01-13 17:00:09
【问题描述】:

我正在开发一个 Android 2.2 应用程序。

我是 Android 的新手,我发现如果从 Activity 启动新 Intent,该 Activity 会进入暂停状态。

如果我希望该用户无法返回之前的活动,我该怎么做?我可以用finish 杀死这个先前的活动吗?

更新
一个例子:

A、B、C 和 D 是活动。 A 是第一个活动。

A 启动 B,B 启动 C,C 启动 D。

我想在 D 启动时关闭或终止活动 B 和 C。

谢谢。

【问题讨论】:

  • Replace current activity 的可能重复项
  • 我认为这不是一个重复的问题。我想在堆栈中维护第一个活动。
  • 照你说的做。在 B 中启动 C 调用 finsih() 时

标签: android android-activity navigation


【解决方案1】:

您可以像往常一样使用您的意图来启动活动,并使用

跟随 startActivity

finish();

如果您在假设的活动 B 上执行此操作,您可以在 C 中点击硬件后退按钮,它会直接将您带到 A。

【讨论】:

  • 这个答案并不是他想要的,尽管它可能仍然是他想要的。假设活动 B 出于某种原因是 FLAG_ACTIVITY_CLEAR_TOP,并且活动 C 试图启动另一个 B。它会弹出活动 C,即使从理论上讲 B 不应该再在堆栈上。
【解决方案2】:

您可能想要重新设计您的设计。如果您有 A 调用 startActivityForResult(B, 0),而 B 何时启动 C,而不是 setResult 并完成,该怎么办。回到 A,onActivityResult 被调用,结果是你设置的。您可以将该结果用作让 A 现在开始活动 C 的消息。

【讨论】:

  • 也许,我可以对 B、C 和 D 使用具有相同 requestCode 的 startActivityForResult。当 D 启动活动 E 时,它可以用 finishActivity(requestCode) 杀死所有这些;
【解决方案3】:

看看是否有帮助 - http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP(这个和其他标志)

而且你还必须调用

finish();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多