2

我有一个应用程序没有调用 onConfigurationChanged,但仅在一种特定情况下。我有 2 个活动,A 和 B。活动 A 有一个网格视图,我根据方向更改列数。使用 onConfigurationChanged 可以正常工作。

但是,如果我按照这些步骤操作,我不会得到 onConfigurationChanged():

  1. 活动 A,方向 1 -> 活动 B(仍然方向 1)
  2. 在活动 B 中旋转设备(现在是 Orientation2)
  3. 回到活动 A,现在在 Orientation2。onResume 被解雇了,我调整了布局。
  4. 在活动 A 中,旋转回 Orientation1。什么都没有触发(onCreate、onResume、onConfigurationChanged...等)布局现在是错误的(列数设置为 Orientation2)。

在此之后,如果我在 Activity A 中继续旋转,其余的旋转将触发 onConfigurationChanged 并且布局会相应调整。这只是从另一项活动回来后的第一次轮换。不管我从哪个方向开始,结果都是一样的。

除了 onConfigurationChanged 我还应该看什么?

4

1 回答 1

1

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

不要更改 onConfigurationChanged 中的列数,而是在res/layoutres/layout-land文件夹中使用不同的布局。在 XML 中定义列数。这样你甚至不需要重写 onConfigurationChanged,Android 会为你处理脏活 :D

布局将layout-land用于横向,layout布局将用于纵向(或用作默认值)。

于 2013-02-21T16:06:14.887 回答