在我的应用程序中,有一个列表视图,每当我向下滚动到底部时,它都会动态增加10个项目。因此,在使用纵向时,我向下滚动到100个项目,然后当我将方向更改为横向时,我的listview将再次创建(只显示前10个项目)。这里的问题是当我回到肖像应用程序崩溃时说:
06-06 12:06:54.849: E/AndroidRuntime(4684): java.lang.RuntimeException:
Unable to start activity
ComponentInfo{com.Android.MyApp/com.Android.MyApp.ListViewActivity}:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
如何使列表视图即使在改变方向时也能恢复?
发布于 2012-06-06 06:54:11
这是因为您的活动在方向更改时被重新创建。
要避免这种情况,请在AndroidManifest.xml
中的activity标签下添加以下内容:
android:configChanges="orientation"
并将此方法包含在您的活动中:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
希望它能有所帮助!
发布于 2012-06-06 06:59:18
你有两个选择。
选项1
包括android:configChanges="orientation"
两个可防止活动重新启动,但这将阻止您为不同方向设置不同的UI。
选项2
如果你想为不同的方向设置不同的UI,那么你将不得不写更多的代码。
重新启动活动时,读取onSaveInstanceState和onRestoreInstanceState
以保存和检索值。
发布于 2012-06-06 06:55:14
答案非常简单:您必须更改活动的AndroidManifest-entry并添加
android:configChanges="orientation"
这将确保如果方向发生变化,您的活动不会被重新创建。
确保覆盖onConfigurationChanged方法以对更改做出反应(如果您想要反应;)
https://stackoverflow.com/questions/10909419
复制