我正在实现类似于 Fragments (Android Developers) 中描述的 fragment 层次结构。
此外,在纵向平板电脑中,应用程序的行为应与第二种情况相同。我的问题是处理从一个方向到另一个方向的事务。
我考虑的第一个想法是:
- 从横向到纵向:当 Activity A 变为纵向时:将 fragment B 移至 View 中。启动 Activity B,让结果传递适当的值以恢复原始 fragment B 状态
- 从纵向到横向:当 Activity B 变为纵向时。完成(结果中包含 fragment 2 状态)。具有结果的 Activity A 恢复 fragment B 并将其添加到其布局中。
但是这个解决方案非常复杂,我认为这显然不是一个好主意。我考虑过的替代解决方案是仅拥有一个 Activity 。该 Activity 布局是:
<FrameLayout>
<LinearLayout>
<Fragment A>
<Fragment B>
<Slot>
对于小型设备:
- 应用程序会删除 fragment B,并在选择某个项目时将 fragment 添加到后台堆栈中的“插槽”
对于平板电脑:
- 使用fragmentTransactions,使用backstack将 fragment B从其位置移动到“Slot”,以正确应对方向变化
我认为第二个选项听起来更好,但是这是正确的方法吗?
谢谢
最佳答案
如果你想要我的建议,我想说这取决于太多因素。我认为你应该坚持你认为足够容易管理的事情。这还取决于您应用的屏幕流程的复杂程度。
如果您没有那么多 fragment 需要管理,那么对我来说,将其保留在一项 Activity 中是一个好主意。这种方法的一个优点是您不需要摆弄两个不同 Activity 的生命周期。
无论如何,发现实现复杂性在某种程度上表明您将来无法管理您的计划。
希望有帮助!
关于java - 添加平板电脑支持 : Fragments and Activities for Master/Detail (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431036/