当我在Android设备上测试我的应用程序时,将我的Android手机从横向变为纵向,我的列表视图中的所有列表项的结果都消失了.
为什么?
怎么管理?
您正在丢失列表项,因为在更改方向时android的默认行为是销毁您的活动并重新创建它.选择此行为是为了使android能够使用可能特别用于新方向的新布局重新创建活动.
为了防止列表项消失,有几件事需要完成.在方向改变期间有用的第一件事是在更改后简单地重复使用相同的活动.这可以通过添加此行来完成
android:configChanges="keyboardHidden|orientation"
到您的清单中的活动标签,您遇到了问题.这个问题在这个问题中有更详细的解释.
如果用户打开活动然后将您的应用程序发送到后台,那么您解释的行为可能也会出现,这会导致您的应用程序从内存中删除,然后重新访问您的应用程序.如果是这种情况,则必须覆盖活动中的onSaveInstanceState方法.在这个问题中解释了如何解决这个问题.
最简单的方法是使用onSaveInstanceState
,在Janusz的答案中解释.
但是,如果列表中有许多项目,将它们保存到Bundle
in中onSaveInstanceState
可能会降低Activity
娱乐过程的速度,用户会将其视为延迟.要保存比较大的数据,使用onRetainNonConfigurationInstance,然后在重新加载数据onCreate
与getLastNonConfugurationInstance
.
尝试在您的活动中添加此内容:
机器人:configChanges = "方向|屏幕尺寸"
这个对我有用