14

当我在 Android 设备上测试我的应用程序时,将我的 Android 手机从横向变为纵向,结果我的列表视图中的所有列表项都消失了。

为什么?

如何管理?

4

3 回答 3

27

您正在丢失列表项,因为在方向更改期间 android 的默认行为是销毁您的活动并重新创建它。选择此行为是为了使 android 能够使用新布局重新创建活动,该布局可能特别用于新方向。

为了防止您的列表项消失,有几件事必须做。在方向更改期间有帮助的第一件事是在更改后简单地重用相同的活动。这可以通过添加此行来完成

android:configChanges="keyboardHidden|orientation"

到您遇到问题的清单中的活动标签。这在这个问题中有更详细的解释。

如果用户打开活动然后将您的应用程序发送到后台执行许多其他内存繁重的工作以使您的应用程序从内存中删除然后重新访问您的应用程序,那么您解释的行为也可能会出现。如果是这种情况,您必须在您的活动中覆盖 onSaveInstanceState 方法。这个问题解释了如何做到这一点。

于 2010-05-25T08:01:09.310 回答
6

尝试将其添加到您的活动中:

android:configChanges="方向|screenSize"

这个对我有用

于 2014-11-25T09:44:42.107 回答
6

最简单的方法是使用onSaveInstanceState,在 Janusz 的回答中解释。

但是,如果您的列表中有很多项目,将它们保存到Bundlein 中onSaveInstanceState可能会减慢Activity重新创建过程,用户会体验到延迟。要保存相对较大的数据,请使用onRetainNonConfigurationInstanceonCreate ,然后使用重新加载数据getLastNonConfugurationInstance

于 2010-05-25T09:25:27.170 回答