微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

三个活动堆栈

如何解决三个活动堆栈

| 我正在尝试弄清楚如何实现一个有趣的概念。 假设我的应用程序底部一个带有3个按钮的栏。我们将它们称为A,B,C。我希望您将它们视为应用程序的3个区域,每个区域都有自己的Activity堆栈。 假设我按B,首先进入B主屏幕。假设此屏幕具有某些功能,可将我带到另一个屏幕,例如列表中特定项目的详细信息。 现在,在详细信息屏幕上,我按下底部的按钮C,然后进入C主屏幕。 如果我按B(或按“后退”按钮),则希望用户被带到“ B活动”堆栈中的最后一个屏幕,该屏幕是详细信息屏幕,而不是主B屏幕。 这可能吗?如果我对事情的理解正确,我应该执行3项任务,其中1项针对A,1项针对B,1项针对C。我还要做什么?     

解决方法

当然,这是可能的并且易于实现。但是,您必须阅读本文以了解如何实现。 您有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机会在任务之间切换,您可以使用例如android菜单。 如果您想清除任务-只需添加标志Intent.FLAG_ACTIVITY_CLEAR_TOP 并且...您需要一些LauncherActivity,它将在您的应用程序启动时启动。此活动应恢复上次访问的任务并完成自身。要恢复-只需将意图与上面的标志一起使用(项目2)。     ,实际上,您描述的场景仅包含一个活动堆栈。实际上将存在多少活动堆栈由Android OS控制,我们只能在规则下尽力而为。 根据描述,导航历史为
B_main -> B_details -> C_main
,而BACK为is2ѭ。如果在所有这三个按钮中都实现了三个按钮(可以通过自定义某些按钮面板并将其包含在布局文件中来完成),则实际上只有一个堆栈。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。