在典型的list-detail设计 Pattern 中,如何正确地管理 Fragment的管理,我遇到了麻烦。

我的布局工作正常,并且为 横向视图 ( 双窗格) 构造了结构:<?xml version="1.0" encoding="utf-8"?>

对于人像视图( 单个窗格),请执行以下操作:<?xml version="1.0" encoding="utf-8"?>

我还在 res/values-w600dp/ 中有一个 refs.xml,以确保根据设备的屏幕宽度加载适当的布局。

选择列表项时,横向视图 应该显示列表和细节 side-by-side,而纵向视图应该只显示详细信息。 如果没有选择任何东西,横向视图 应该显示左边左边和右边的空白,而纵向视图应该只显示列表全屏显示。

img.php?siteid=1&aid=1544792&hash=SU1NV3QucG5n

但是,在这里我遇到了问题:我是否将"主要" Activity 用于列表+ 可选的详细信息布局,以及另一个用于纵向,details-only布局的"详情" Activity? 这似乎是 Fragments 指南的示例。 我已经让这个approah正常工作了,但是如何在方向改变时保持我的细节 fragment的状态?

考虑上面所示的相反情况下--旋转在机身虽然细节可见意味着细节 Activity 需要 finish() ed所以主 Activity 可以显示two-pane布局,但这也破坏了 fragment 及其 savedInstanceState 细节。 如果用户在详细信息 fragment 中的EditText 字段中输入了类型信息,则将它的旋转,如何在将它的添加到主( two-pane ) Activity 时保留详细信息 fragment的整个用户界面状态?

我只使用一个 Activity 并管理 Fragment的自己? 这允许我在方向改变( 因为安卓会自动处理这个问题) 时保留细节UI的状态,但是在返回后堆栈时它会变得混乱。

考虑图片--在从横向转到纵向的情况下,细节应该显示显示细节的single-pane,但如何正确地管理后堆栈和 ActionBar 主 icon 显示列表 single-pane? 回滚到横向还需要撤销之前所做的任何回栈操作,因为 Fragments 同时可见。

经过更多的搜索之后,我发现了两个类似的问题( 从两个窗格到另一个窗格的switch 在方向更改中维护 fragment 堆栈,并在 activity 之间保留保持 fragment 状态。),但是我的情况稍有不同,因为我没有尝试修改这个功能,而是在前面。 我缺少什么?android难道不可以两回堆栈( 在多个 Activity 案例中) 和( 在单个 Activity 案例中) ui状态,对吧?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐