Android 更改设备方向时,将重新创建listview

Android 更改设备方向时,将重新创建listview,android,listview,orientation,indexoutofboundsexception,Android,Listview,Orientation,Indexoutofboundsexception,在我的应用程序中,有一个listview,每当我向下滚动到底部时,它会动态增加10个项目。因此,当使用纵向时,我向下滚动到100个项目,然后当我将方向更改为横向时,我的listview将再次创建(仅显示前10个项目)。这里的问题是,当我回到肖像应用程序崩溃时,会说: 06-06 12:06:54.849: E/AndroidRuntime(4684): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.

在我的应用程序中,有一个listview,每当我向下滚动到底部时,它会动态增加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

如何在更改方向时恢复listview???

这是因为您的活动在更改方向时被重新创建。
要避免这种情况,请将其添加到活动标记下的
AndroidManifest.xml
中:

android:configChanges="orientation" 
并将此方法包括在您的活动中:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    }

希望对你有帮助

答案很简单:您必须更改活动的AndroidManifest条目并添加

android:configChanges="orientation"
这将确保如果方向发生变化,您的活动不会被重新创建

确保重写方法以对更改作出反应(如果您想作出反应;)

您有两个选择

选项1

包括
android:configChanges=“orientation”
2个阻止活动重新启动 但这将阻止您为不同的方向设置不同的UI

选项2

如果您想为不同的方向设置不同的UI,那么您必须编写 多一点代码

读取onSaveInstanceState和onRestoreInstanceState以在
正在重新启动活动。

如果您不打算更改任何内容,则不需要实施OnConfiguration Changed(如果您只是从横向切换到纵向,并具有wrap_内容列表视图,则通常不需要执行OnConfiguration Changed)。是的。。。但是,如果您需要根据方向变化修改任何控制位置大小/位置,则需要此方法。所以实现它不会有什么害处。onConfigurationChanged中的newConfig必须是定向的???或者只是newConfig?它只是一个对象名。在第1行和第2行中使用相同的。你想用什么就用什么。您可以使用答案中建议的完全相同的方法。onConfigurationChanged中必须实现的内容……要说不重新启动活动??已经存在一个超级实现-如果您只是调用super;,则不需要重写它。)为我节省了大量时间:-)+1在活动标记中停止娱乐加载项清单文件
android:configChanges=“orientation | keyboardHidden”