[英]Android: Tabbed App with Navigation Stacks
我正在克隆一个使用UITabBarViewController
作为“ main / outer / root” UIViewController
的iOS应用。 每个选项卡都有一个UINavigationController
作为根,以管理UIViewController
实例的导航堆栈。
我正在努力做两件事:
我已经搜索了很多,但是在过去几年中,这个主题似乎已经发生了很大变化。 我尝试了一个解决方案,该解决方案具有一个可管理所有活动的活动,但该活动需要维护单独的后备堆栈,并且似乎对这里的大多数用户都不满意。
目前,我有一个“可以”工作的解决方案。 据我了解,我当前的设置是:
ActionBarActivity
单个BaseActivity
类。 drawer.xml
布局,该布局的最外层为android:support.v4.widget.DrawerLayout
。 FrameLayout
,这是我的片段的容器。 ListView
,它是抽屉本身。 根据我对应用程序的测试,此设置可为我提供大部分所需信息。
onBackPressed()
在BaseActivity
如果合适的话,以正确弹出返回堆叠。 我遇到的问题是这样的:
我已经研究了“活动/意图”启动标志,但是不确定我是否真的知道发生了什么。 到目前为止,我的阅读使我尝试了以下步骤:
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
,请按以下方式设置其标志: intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
android:launchMode="singleInstance"
或这样 android:launchMode="singleTop"
我面临的一个奇怪的附加问题是,启动新的Activity似乎并没有像我期望的那样创建Activity back堆栈。 当我从活动1移到活动2(暂时忽略缺少碎片返回堆栈维护)时,在活动2中按返回按钮将关闭应用程序,这使我感到困惑。
对于这种类型的应用程序结构/导航,是否存在单一的当前最佳实践?
好的方法是进行1个活动并手动处理后向堆栈,因为Android只有1个堆栈。 我已经做了几次,最后我创建了一个名为Tab Stacker的库来完成这项工作:每个标签的片段历史记录。
它是开源的并且有完整的文档,可以很容易地随gradle一起提供。 您可以在github上找到该库: https : //github.com/smart-fun/TabStacker
您还可以下载示例应用程序以查看行为符合您的需求:
https://play.google.com/apps/testing/fr.arnaudguyon.tabstackerapp
如果您有任何疑问,请随时发送邮件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.