在更改设备方向列表视图重新创建

时间:2012-06-06 06:50:28

标签: android listview orientation indexoutofboundsexception

在我的应用程序中有一个列表视图,每次向下滚动到底部时动态增加10个项目。因此,在使用纵向方向时,我向下滚动到100个项目,然后当我将方向更改为横向时,我的列表视图将再次创建(仅显示前10个项目)。这里的问题是当我回到肖像app崩溃说:

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

即使更改方向,如何使列表视图恢复???

3 个答案:

答案 0 :(得分:0)

你有两个选择。

选项1

包含android:configChanges="orientation"两个阻止活动重启 但这会阻止您为不同方向设置不同的UI。

选项2

如果要为不同方向设置不同的UI,则必须编写 更多代码。

读取onSaveInstanceState和onRestoreInstanceState以保存和检索值 重启活动。

答案 1 :(得分:-1)

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

android:configChanges="orientation"

这个将确保如果发生方向更改,则不会重新创建活动。

确保覆盖onConfigurationChanged方法以对更改作出反应(如果您想做出反应;)

答案 2 :(得分:-2)

这种情况正在发生,因为您的活动将在方向更改时重新创建 为避免这种情况,请在活动代码下的AndroidManifest.xml中添加:

android:configChanges="orientation" 

并在您的活动中加入此方法:

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

希望它有所帮助!!!