我正在试图弄清楚如何实现一个有趣的概念。
假设我的应用程序底部有一个带有3个按钮的栏。我们将它们称为A,B,C。我希望您将这些视为应用程序的3个区域,每个区域都有自己的活动堆栈。
假设我按B,我首先进入主B屏幕。假设此屏幕中有一些功能可以将我带到另一个屏幕,比如列表中特定项目的详细信息。
现在,在详细信息屏幕上,我按下底部的按钮C,然后我将进入主C屏幕。
如果我按B(或按后退按钮),我希望用户进入B活动堆栈的最后一个屏幕,这是详细信息屏幕,而不是主B屏幕。
这可能吗?如果我理解正确,我应该有3个任务,1个用于A,1个用于B,1个用于C,是吗?我还需要做什么?
答案 0 :(得分:0)
实际上,您描述的方案仅包含 ONE 活动堆栈。实际上将存在多少活动堆栈由Android OS控制,我们只能在规则下尽力而为。
根据说明,在BACK为B_main -> B_details -> C_main
之后,导航历史为B_main -> B_details
。如果在所有这些Activity
中实现了这三个按钮(可以通过自定义某个按钮面板并将其包含在布局文件中来完成),那么确实只有一个堆栈。
答案 1 :(得分:0)
当然,实施起来既可行又简单。但是你必须阅读this以了解如何实现它。
您有3个根活动:A_main,B_main,C_main。每项活动都应该开始一项新任务。要做到这一点你需要:
在你的清单中声明对他们有不同的亲和力:
活动android:name =“。A_main”android:taskAffinity =“。A”
活动android:name =“。B_main”android:taskAffinity =“。B”/>
使用标志启动(切换)任务启动新意图(可以使用ApplicationContext):
private static final int ROOT_INTENT_FLAG =
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
提供ui机会在您可以使用的任务之间切换,例如安卓菜单。 如果要清除任务 - 只需添加标志Intent.FLAG_ACTIVITY_CLEAR_TOP
而且......你需要一些LauncherActivity,它将在你的应用程序启动时启动。此活动应恢复上次访问的任务并完成自身。要恢复 - 只需使用带有上面标志的意图(第2项)。