在方向更改上切换片段或活动(即布局)
在发生方向更改时,我在某些设备尺寸上切换活动和片段时遇到问题。 在我的情况下,它是large
屏幕,但它可能发生在其他屏幕尺寸取决于应用程序。 我四处寻找答案,但似乎没有妥善解决这个问题。
我有两个活动,MainActivity和SubordinateActivity。 MainActivity是该应用唯一的入口点; MainActivity启动SubordinateActivity。 每个活动都有自己的片段,MainFragment和SubordinateFragment。 在normal
设备上运行时,不管方向如何,屏幕上只有一个片段的空间足够多。 在这种情况下,每个活动都会管理自己的片段。 在xlarge
设备上,无论方向如何,都有足够的空间存放两个碎片。 在这种情况下,有不同的布局文件允许在屏幕上显示两个片段。 MainFragment和SubordinateFragment都由MainActivity管理(从不使用SubordinateActivity)。
large
屏幕出现麻烦。 使用横向方向,有足够的空间用于两个片段,但纵向方向不存在。 我有每个适当的布局文件。 在横向模式下,MainActivity管理这两个片段(与xlarge
设备一样),并且在纵向模式下,每个活动管理自己的片段(与normal
设备一样)。 这在两种情况下会产生问题:
这个问题的一个很好的例子是GMail应用程序。 以下是该应用的一些屏幕截图,以防它不清楚我在说什么。 我意识到GMail应用的UI实际上比我的更复杂,但问题是一样的。
我相信这是其他人遇到的问题,因为GMail开发者也遇到了这个问题。 我找不出什么好的解决方案,因为每种可能性似乎都涉及违反Android UI最佳实践,或者在Activity代码和XML布局之间创建一些不合理的纠结。
以下是我的一些想法,其中没有一个看起来确实是正确的:
large
设备上执行,这意味着混合代码检查哪些布局可用于活动代码。 normal
大小的设备上它可以根据需要交换MainFragment和SubordinateFragment。 最后,我不认为这解决了这个问题,因为MainActivity仍然依赖布局文件来告诉它显示哪些和多少片段。 这也违反了活动代表用户所做的离散事情的原则。 以下是我一直在努力解决此问题的一些资源。 正如我所说,这似乎是一个常见问题,但似乎没有规范的Android解决方案。 这是一个缺点,因为文档建议使用Fragments,每个开发人员都会遇到这个问题。
简介 :我有适用于xlarge
设备的多窗格模式。 我试图解决的问题是在large
设备上只能在横向上处理多个窗格的单窗格(纵向)和多窗格(横向)模式之间切换。
杀死SubordinateActivity
并在应用程序中拥有唯一的入口点,然后MainActivity
决定用MainFragment
或SubordinateFragment
填充整个视口。 您可以通过查看链接到的设计指南的开发人员文档来找到有关如何执行此操作的示例。
完成此操作后,您可以按照此处所述创建特定于大型和横向, res/layout/large-land
的资源文件夹,并为MainActivity
设置布局文件,以在前一个链接中包含与课程#2相似的两个片段段。
除了正常的XML布局外,更改为该文档中描述的内容应该会自动处理您描述的所有内容,因为在技术上定位更改在技术上是重新创建的活动。
链接地址: http://www.djcxy.com/p/15641.html上一篇: Switching Fragments or Activities (ie layouts) on Orientation Change