目前,我在平板电脑上拥有横向和纵向的双窗格布局。
与设置类似,我有一个活动,它将一个片段加载到左选择窗格中,然后在显示的任何正确片段中做出的选择导致在右窗格中显示更多片段,一直添加到后台。
现在我可以看到,对于某些平板电脑来说,有一个用于纵向的单个窗格和用于横向的双窗格是有意义的。但是,我想要以下行为:
A)如果在横向上,深度 N 的片段堆栈在右侧窗格中然后在方向更改为纵向时我仍然希望显示片段 N 以及要维护的堆栈
B)然后在纵向模式下从片段 N 导航回来我最终想回到选择屏幕。
现在我无法弄清楚如何实现这一点,到目前为止我想出的想法是:
1)对于两个方向都有双窗格但在方向更改时隐藏左窗格,然后需要在清除堆栈时重新显示并隐藏右窗格
2)将堆栈重建到新的包含器中,在开关上将选择片段添加到纵向
如果它们起作用,它们对我来说似乎完全令人满意。只是想知道更好/推荐的方法是什么。
提前致谢。彼得。
修改1
应该提到的是,我了解到你可以拥有不同的纵向和横向布局,并且正在完成一个大型项目,其中包含纵向和横向的双窗格布局,因此在方向更改的生命周期中可以正常使用。我还查看了FragmentLayoutSupport
示例,但是如果方向更改为纵向,则不会在右窗格中维护数据,它会再次显示列表。
答案 0 :(得分: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
答案 1 :(得分:0)
如果您使用带有操作意图和uri的列表,您可以根据onCreate
中的方向,操作和uri重新排序frags。
如果不是,我猜您可以在首选项中保留 selectedId 值,并使用它来跟踪您的详细信息视图。
您必须通过将其保存到onclick中的首选项来保持此值是最新的,并确保将其更新为-1(或合适),例如返回(如果返回关闭此片段)。