更改方向,丢失所有列表项

时间:2010-05-25 07:50:00

标签: android orientation android-listview

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

为什么?

如何管理?

3 个答案:

答案 0 :(得分:27)

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

为防止列表项消失,有几件事需要完成。 在方向改变期间有用的第一件事是在更改后简单地重复使用相同的活动。这可以通过添加此行

来完成
android:configChanges="keyboardHidden|orientation"

到您的清单中的活动代码,您遇到了问题。这在question中有更详细的解释。

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

答案 1 :(得分:6)

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

但是,如果您的列表中有多个项目,则将其保存到Bundle中的onSaveInstanceState可能会降低Activity娱乐过程的速度,用户可能会遇到延迟。要保存相对较大的数据,请使用onRetainNonConfigurationInstance,然后使用onCreategetLastNonConfugurationInstance中重新加载数据。

答案 2 :(得分:6)

尝试在您的活动中添加此内容:

android:configChanges =“orientation | screenSize”

它对我有用