我有一个不调用onConfigurationChanged的应用程序,但仅在一种特定情况下。我有2个活动A和B。活动A具有gridview,并且我根据方向更改列数。使用onConfigurationChanged可以正常工作。
但是,如果按照以下步骤操作,则不会得到onConfigurationChanged():
活动A,方向1->活动B(静态1)
在活动B(现在为Orientation2)中旋转设备
返回活动A,现在位于Orientation2中。 onResume被触发,我调整布局。
在活动A中,旋转回到Orientation1。什么都没有触发(onCreate,onResume,onConfigurationChanged等)。现在布局错误(列数设置为Orientation2)。
此后,如果我在活动A中继续旋转,则其余旋转会触发onConfigurationChanged,并且布局会相应调整。从另一个活动回来之后,只有第一次旋转。无论从哪个方向开始,结果都是一样的。
除了onConfigurationChanged之外,我还应该查看其他内容吗?
最佳答案
onConfigurationChanged仅在活动上下文(可见的Activity或Fragments)中触发。
不用更改onConfigurationChanged中的列数,而是在res/layout
和res/layout-land
文件夹中使用不同的布局。
在XML中定义列数。这样,您甚至不需要覆盖onConfigurationChanged,Android就会为您处理繁琐的工作:Dlayout-land
布局将以横向使用,而layout
布局将以纵向使用(或默认使用)。
关于android - Android轮换问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15006779/