这基本上是一个经典的Android用例。
假设我们有两个片段:FragmentA和FragmentB。
在横向模式下,FragmentA和FragmentB并排放置。
在纵向模式下,它们各自占用整个屏幕。
(请参见此图像,但替换tablet-> landscape和handset-> portrait) 如支持单窗格和多窗格布局所述,有两种方法可以实现此目标。
有人能解释一下如何做到这一点,或者指向一个适当的教程或示例应用程序吗?
假设我们有两个片段:FragmentA和FragmentB。
在横向模式下,FragmentA和FragmentB并排放置。
在纵向模式下,它们各自占用整个屏幕。
(请参见此图像,但替换tablet-> landscape和handset-> portrait) 如支持单窗格和多窗格布局所述,有两种方法可以实现此目标。
1- 多个片段,一个活动:无论设备大小如何,都使用一个活动,但在运行时决定是否将片段组合在布局中(创建多窗格设计)或交换片段(创建单窗格设计)。
2- 多个片段,多个活动:在平板电脑上,将多个片段放置在一个活动中;在手机上,使用单独的活动来托管每个片段。例如,当平板电脑设计在一个活动中使用两个片段时,对于手机,使用相同的活动,但提供一个替代布局,只包括第一个片段。在手机上运行并需要切换片段(例如用户选择项目时),启动另一个托管第二个片段的活动。
这在理论上很有道理,但我在尝试实际实现这两种方法以一种能够在方向更改和返回按钮按下时恢复片段状态的方式时遇到了一些困难。
我尝试了第一种方法,并取得了相当大的进展,但发现它很混乱,因为它需要手动管理所有片段事务,特别是因为片段的容器不能轻易地更改。在返回按钮按下时决定要做什么也很麻烦,因为后退栈上的最后一笔交易可能属于另一种方向。
现在我正在尝试第二个选项。到目前为止,它似乎更清洁,但是片段会在每次方向更改时从头开始重建(因为每个方向使用不同的 Activity)。我希望有一种方法可以从其他 Activity/方向中恢复 Fragment 的状态。有人能解释一下如何做到这一点,或者指向一个适当的教程或示例应用程序吗?