2013-02-21 161 views
2

我有一个不调用onConfigurationChanged的应用程序,但只在一个特定情况下。我有2个活动,A和B.活动A有一个网格视图,我根据方向更改列数。这工作正常使用onConfigurationChanged。Android旋转问题

但是,如果我按照这些步骤,我没有得到一个onConfigurationChanged():

  1. 活性A,Orientation1 - >活动B(静止Orientation1)
  2. 转动装置,而在活动B (现在是Orientation2)
  3. 返回到活动A,现在位于Orientation2。 onResume被解雇,我调整了布局。
  4. 在活动A中,旋转回Orientation1。没有任何东西被触发(onCreate,onResume,onConfigurationChanged ...等)布局现在是错误的(列数设置为Orientation2)。

之后,如果我在Activity A中继续旋转,其余的旋转会触发onConfigurationChanged并且布局会相应地进行调整。这只是从其他活动回来后的第一次轮换。我从哪个方向入手并不重要,结果是一样的。

除了onConfigurationChanged之外还有什么我应该看的?

+0

请张贴您的'AndroidManifest.xml'。 – Phil 2013-02-21 16:13:43

+0

将文件夹命名为layout-land,然后从布局文件夹复制粘贴所有布局,然后将它们粘贴到layout-land中并对其进行更改。因为他们会自动编辑一些高度和宽度。 – k0sh 2013-02-21 16:17:32

回答

1

onConfigurationChanged只会在活动上下文中触发(可见Activity或Fragments)。

而不是更改onConfigurationChanged中的列数,请使用res/layoutres/layout-land文件夹中的不同布局。 在XML中定义列数。这样,你甚至都不需要重写onConfigurationChanged和Android会照顾肮脏的工作对你:d

layout-land布局西港岛线的横向使用和layout布局将以纵向使用(或者是用作默认值)。