添加平板电脑支持:主/细节的碎片和活动(Android)

时间:2012-11-17 13:32:06

标签: java android android-fragments

我正在实现类似于Fragments (Android Developers)中描述的片段层次结构。enter image description here

在纵向平板电脑中,app应该与第二种情况一样。我的问题是处理从一个方向到另一个的交易。

我考虑的第一个想法是:

  • 从横向到纵向:当活动A转到纵向时:将片段B移到视图中。启动活动B,结果传递propper值以恢复原始片段B状态
  • 从纵向到横向:当活动B进入纵向时。完成(结果中的片段2状态)。带有结果的活动A恢复并将片段B添加到其布局中。

但是这个解决方案非常复杂,我认为它可能不是一个好主意。我考虑的替代解决方案只是有一个活动。该活动布局是:

<FrameLayout>
    <LinearLayout>
       <Fragment A>
       <Fragment B>
    <Slot>

对于小型设备:

  • 该应用删除片段B,当选择一个项目时,将片段添加到“Slot”

对于平板电脑:

  • 使用fragmentTransactions将片段B从其位置移动到“Slot”,使用backstack正确地处理方向更改

我认为第二个选项听起来更好但是,这是正确的方法吗?

由于

2 个答案:

答案 0 :(得分:1)

如果你需要我的建议,我会说这取决于太多因素。我认为你应该坚持你认为足够可管理的东西。这也取决于你的应用程序屏幕流程的复杂程度。

如果你没有那么多的片段需要管理,对我来说,将它保存在一个活动中是一个好主意。这种方法的一个优点是你不需要弄乱两种不同活动的生命周期。

无论如何,找到实施情结在某种程度上表明您计划的将来无法为您管理。

希望有所帮助!

答案 1 :(得分:-1)

我不明白你为什么要这么复杂地做这件事。平板电脑上有一项活动,手机上有两项活动。让第一个活动实现一个监听器,如果单击列表片段的项目将触发该监听器。活动知道它是在单窗格还是双窗格模式内,因此在onItemSelected回调方法中,让它在单窗格模式下启动新活动,或者在平板电脑的情况下替换片段。

您还可以在创建新项目时使用主/明细模板查看此内容。