首页 文章

在方向更改维护片段堆栈上从双窗格切换到单窗格

提问于
浏览
4

目前,我在平板电脑上有横向和纵向的双窗格布局 .

与设置类似,我有一个活动,它将一个片段加载到左选择窗格中,然后在显示的任何正确片段中进行选择,导致在右窗格中显示更多片段,一直添加到backstack .

现在我可以看到,对于某些平板电脑来说,有一个用于纵向的单个窗格和用于横向的双窗格是有意义的 . 但是,我想要以下行为:

A)如果在横向上一个深度为 N 的片段堆栈在右窗格中然后在方向上更改为纵向我仍然希望显示片段 N 并且要保持堆栈

B)然后在纵向模式下从片段 N 导航回来我最终想回到选择屏幕 .

现在我无法弄清楚如何实现这一点,到目前为止我想出的想法是:

1)对于两个方向都有双窗格但在方向更改时隐藏左窗格,然后需要在清除堆栈时重新显示并隐藏右窗格

2)将堆栈重建到新的容器中,在开关的开头添加选择片段到纵向

如果它们起作用,对我来说似乎完全令人满意 . 只是想知道更好/推荐的方法是什么 .

提前致谢 . 彼得 .

Edit 1

应该提到的是,我了解到你可以拥有不同的纵向和横向布局,并且正在完成一个大型项目,其中包含纵向和横向的双窗格布局,因此在方向更改的生命周期中可以正常使用 . 我还查看了 FragmentLayoutSupport 示例,但是没有将方向更改为右侧窗格中的数据更改为纵向,它再次显示列表 .

2 回答

  • 1

    PJL,所以你在这里是正确的轨道,要么你可以检查你的方向然后显示或隐藏特定的片段,或者你可以有两个不同的布局,一个用于肖像,一个用于风景,在你的活动的onCreate功能,你可以检查如果第二个片段可以通过findViewById获得然后实例化它 . 您正在寻找的视图只有一个已知Id的FrameLayout . 因此,请确保您了解在方向更改期间发生的情况enter link description here非常好的碎片示例是本书样本的一部分The Busy Coder's Guide To Advanced Android Development该书是40美元/年描述的一部分 . 示例代码是免费的 . 查看Fragments Example它可能有助于解决您的问题 . 当然,您也可以查看developer.android.com上的示例FragmentLayoutSupport.java

  • 0

    如果您使用带有操作意图和uri的列表,您可以根据 onCreate 中的方向,操作和uri重新排序frags .

    如果不是,我猜您可以在首选项中保留selectedId值,并使用它来跟踪您的详细信息视图 .

    您必须通过将其保存到onclick中的首选项来保持此值是最新的,并确保将其更新为-1(或合适),例如返回(如果后面关闭此片段) .

相关问题