【问题标题】:Navigate & finish multiple instances of same activity on button click在按钮单击时导航并完成相同活动的多个实例
【发布时间】:2021-11-09 21:11:32
【问题描述】:

这个很奇怪。我正在一个较旧的应用程序上实现面包屑导航,我还没有准备好重构视图。不幸的是,每个新导航都会打开一个新活动,有时还会打开同一活动的新实例。所以我的面包屑导航基本上是这样的:

Activity A > Activity B > Activity C > Activity C > Activity C > Activity C > Activity D

因此,如果我在 Activity C 上并且我需要返回到 Activity B,我可以将 Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 设置为意图并导航回来没有问题。但是,如果我需要从 Activity C 的第 4 个实例导航到 Activity C 的第 2 个实例,我无法使用任何意图标志来实现这一点。我的应用程序已经在使用后退按钮,因此我无法覆盖它以在此处使用。有人对在 Activity C 的多个实例之间导航有任何想法吗?

幸运的是,所有这些应用程序都继承自同一个父应用程序,该父应用程序扩展了 FragmentActivity,如果这有帮助的话。

【问题讨论】:

  • 你为什么不使用 Fragments 呢?
  • 但是,如果您必须使用活动,您可以尝试查找活动启动模式。有很多,在这里我很难解释
  • @gtxtreme 我还没有重构应用程序,我可以将活动变成片段。显然,在这种情况下,我可以根据需要多次弹出 backstack。此应用创建于 2014 年,此后未更新。
  • 我还是不明白在什么情况下一个activity可以实例化不是一次而是4次
  • @gtxtreme 这在 Android 中很容易做到,你可以随时调用startActivity() 并创建一个Activity 的新实例,即使你使用的类与制作的类相同电话。

标签: java android android-intent android-fragmentactivity


【解决方案1】:

要返回面包屑中的一项,您不必使用 BACK 按钮,只需调用 finish(),这将完成当前的 Activity 并返回堆栈中的前一项。

要返回特定的Activity,您可以使用startActivity() 和标志Intent.FLAG_ACTIVITY_CLEAR_TOPIntent.FLAG_ACTIVITY_SINGLE_TOP,正如您在问题中已经指出的那样。

其他任何事情都是不可能的。在此处查看我对相关问题的回答:

https://stackoverflow.com/a/39104837/769265

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多