【发布时间】:2014-06-18 07:37:22
【问题描述】:
我想实现这样的导航(下图),其中片段 A、B、C、D 表示向下导航到应用程序的信息层次结构。
在手机上只有一个片段可见,而在平板电脑上则有两个片段可见。
我看过的所有教程和文档(例如this 和this)都提到了Master-Detail 视图,其中似乎左侧有一个主片段,右侧有一个详细视图,但是似乎没有人指定如何从细节中深入挖掘。
事实上,平板电脑的 GMail 应用程序就像我自己的应用程序一样工作。假设片段 A 是帐户和文件夹列表,片段 B 是电子邮件列表,片段 C 是对话本身。
此屏幕是带有片段 A 和 B 的配置
这个屏幕有片段 B 和 C
问题是:我是否应该使用单个 Activity 来实现这一点,其中
- 对于手机,我将为片段设置一个 FrameLayout
- 对于平板电脑,我将有两个 FrameLayouts 用于“左”和“右”片段?
如果是这样,我将如何插入新片段?在 FragmentTransaction 中,我有两个可用的操作 - add() 和 replace()。
- 如果我使用
add(),那么下面的片段似乎还活着(它们不会进入暂停状态)并保持完整状态(但可能会浪费一些资源)(所以在片段D中,所有的C、B和 A 仍然存在),并且在后退按钮上,滚动状态和加载的数据仍然存在 - 如果我使用
replace(),那么前一个片段将被删除,因此任何时候顶部都只会有一个(在手机上)片段,而在后退按钮上,事务将被撤销,旧片段添加回来,但它不会记住它之前的状态
这些选项对我来说似乎都不合适。教程在 FragmentTransaction 中使用 replace() - 但是它们如何恢复前一个片段的状态,例如在手机的 GMail 应用程序中,片段 B 从服务器加载并无限滚动,然后当我用片段 C 替换它时然后往回走,B应该会出现在它离开的地方,对吧?
我真的不知道该做什么或去哪里看,请指教。
【问题讨论】:
标签: android android-layout android-fragments android-navigation