1

我试图弄清楚如何实现一个有趣的概念。

假设我的应用程序底部有一个带有 3 个按钮的栏。我们将它们称为 A、B、C。我希望您将它们视为应用程序的 3 个区域,每个区域都有自己的 Activity 堆栈。

假设我按 B,我首先被带到 B 主屏幕。假设这个屏幕中有一些功能可以将我带到另一个屏幕,比如列表中特定项目的详细信息。

现在,在详细信息屏幕上,我按下底部的按钮 C,然后我被带到 C 主屏幕。

如果我按 B(按后退按钮),我希望用户被带到 B Activity 堆栈中的最后一个屏幕,即详细信息屏幕,而不是主 B 屏幕。

这可能吗?如果我理解正确的话,我应该有 3 个任务,A 1 个,B 1 个,C 1 个,是吗?我还需要做什么?

4

2 回答 2

0

实际上,您描述的场景仅包含一个活动堆栈。到底会有多少个activity stack,其实是由Android OS来控制的,我们只能在规则下尽力而为。

根据描述,导航历史是B_main -> B_details -> C_main,后退是B_main -> B_details。如果这三个按钮都实现在所有这些Activitys中(可以通过自定义一些按钮面板并将其包含在布局文件中来完成),那么确实只有一个堆栈。

于 2011-04-13T18:57:41.603 回答
0

当然,这是可能的并且易于实现。但是您必须阅读本文以了解如何实现它。

您有 3 个根活动:A_main、B_main、C_main。每个活动都应该开始一个新任务。为此,您需要:

  1. 在您的清单中为它们声明不同的亲和力:

    活动 android:name=".A_main" android:taskAffinity=".A"

    活动 android:name=".B_main" android:taskAffinity=".B"/>

  2. 要使用标志启动(切换)任务启动新意图(您可以使用 ApplicationContext):

    private static final int ROOT_INTENT_FLAG = 
        Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
    

要提供在任务之间切换的 ui 机会,您可以使用例如 android 菜单。如果你想清除任务 - 只需添加标志 Intent.FLAG_ACTIVITY_CLEAR_TOP

而且...您需要一些 LauncherActivity,它将在您的应用程序启动时启动。此活动应恢复上次访问的任务并自行完成。要恢复 - 只需使用带有上述标志的意图(第 2 项)。

于 2011-04-14T09:47:38.977 回答