【发布时间】:2015-06-03 07:41:02
【问题描述】:
我有一个疑问,想澄清一些关于 Activity 持有多个片段的问题。
我有 10 个片段与一个 Activity (HomeActivity.java) 相连;此活动包含一个导航抽屉和工具栏,其中包含多个图标,如搜索、添加、删除、后退按钮等。
我所遵循的结构如下,
用户点击导航抽屉中的任何项目,我正在加载片段,
fragmentManager.beginTransaction().replace(R.id.fragment_container, fragmentToLoad, tagFragment).addToBackStack(tagFragment).commit();
fragmentToLoad -> 片段名称,tagFragment -> 标记该特定片段。
我正在根据 HomeActivity 本身的片段更改标题名称、工具栏。
我的导航抽屉项目只有一个片段,并在 fragment_container 中被替换,但还有一件事,这些片段也有内部子片段。
一开始,我说过有 10 个片段,那 10 个片段是导航抽屉项。有很多内在的碎片。
现在,我在 HomeActivity.java 中使用接口(Listeners)维护内部片段的点击侦听器和其他活动。
所以,有时我会收到警告“主线程有很多工作要做”。
我知道 HomeActivity.java 上有很多活动。
请告诉我这个架构是错误的或者有什么解决办法。
【问题讨论】:
-
你可以使用这样的片段......但一般不推荐,因为你最终会得到一个非常臃肿的“超级活动”。最初,片段更多地是帮助平板电脑开发的解决方案——以避免重写或复制大量代码来制作平板电脑布局。考虑根据用例将您的片段分成活动。
-
您应该考虑从片段转移到自定义视图。我不知道您收到的警告是否与您的应用程序架构有关,但过度使用片段肯定无济于事。 corner.squareup.com/2014/10/…
-
另外,如果您有时间,请查看 Google IO 2014 iosched 源代码 - github.com/google/iosched。这是如何组织安卓应用的一个很好的例子。
标签: android android-fragments navigation-drawer