- Android开发者指南上的Fragments文档。
- Google IO app
- ActionBar Sherlock的Fragments示例。
- 在大屏幕上,显示一个带有多个Fragment的Activity
- 在较小的屏幕上,将Fragment分配到多个Activity中。
- 将所有的
Fragment
放入单个Activity
中。 - 根据屏幕大小和方向,使用
FragmentTransaction.show()
/FragmentTransaction.hide()
显示/隐藏相应的Fragment
。
以Android开发者指南使用的相同的“新闻文章列表/文章内容”示例为例:
- 创建包含
ArticleListFragment
和ArticleReaderFragment
两个Fragment的News
活动。 - 在标签上,这两个Fragment始终显示。
- 在手机上,
ArticleReaderFragment
最初是隐藏的。当从列表中选择文章时,ArticleListFragment
被隐藏,ArticleReaderFragment
被显示。
有人使用过类似的方法吗?这种方法可能有什么实际的缺点?与多个Activity的方式相比,它看起来更好还是更差?例如,无法在XML中显示/隐藏片段-必须使用FragmentTransaction
。
编辑1:假设情景的描述
想象一个应用程序,可以在屏幕上同时显示最多三个“窗格”。此外,需要考虑以下因素:
- 手机一次只能显示一个窗格(无论是纵向还是横向)
- 7英寸的平板电脑可以在纵向模式下分割成两个竖向窗格,在横向模式下分割成两个横向窗格。
- 10英寸以上的平板电脑可以在纵向模式下分割成两个竖向窗格,在横向模式下分割成三个横向窗格。
为了简单起见,让我们将电视屏幕排除在讨论之外。
现在,将这个转化为设计:
- 我们有三个片段:Frag1、Frag2和Frag3。
- 在最简单的情况下,所有三个片段都在一个活动中(称为ActivityA)。这是10英寸的横向情况。
- 另一个“简单”的情况是每个片段都在自己的活动中——ActivityA包含Frag1;ActivityB包含Frag2,ActivityC包含Frag3。
到目前为止,我们还没有考虑与Android开发人员指南中提供的新闻阅读器示例有显著不同的任何内容。唯一的主要区别是有三个片段而不是两个。
现在,考虑只能容纳2个片段的7英寸标签的情况。这会怎样工作?请注意,这里有两种组合可能:1.显示Frag1和Frag2。 2.显示Frag2和Frag3。
我只是无法理解这个问题。我应该在ActivityA内完成所有操作吗?还是创建一个全新的ActivityD?我需要创建多少个布局(我数了大约8个)?这不是太多的排列组合了吗?
我确实意识到,我上面提出的单活动方法可能也不适合这种情况——因为显示/隐藏片段本身就不容易。
有没有建议如何处理这个问题,而不会被过多的布局和组合所压倒?