Android AblistView:屏幕方向更改期间onRestoreInstanceState内的ClassCastException
我在几个片段和活动中使用了Android AblistView:屏幕方向更改期间onRestoreInstanceState内的ClassCastException,android,android-listview,android-2.3-gingerbread,Android,Android Listview,Android 2.3 Gingerbread,我在几个片段和活动中使用了AbsListView,这样我就可以在纵向模式下使用ListView,在横向模式下使用GridView。我每天都用ICS和JB进行测试,效果很好。我开始在GB设备(2.3.6)上进行测试,当我在其中一个屏幕处于活动状态的情况下旋转设备时,我得到一个ClassCastException。以下是堆栈跟踪: 05-09 14:04:55.019: E/AndroidRuntime(6052): Caused by: java.lang.ClassCastException:
AbsListView
,这样我就可以在纵向模式下使用ListView
,在横向模式下使用GridView
。我每天都用ICS和JB进行测试,效果很好。我开始在GB设备(2.3.6)上进行测试,当我在其中一个屏幕处于活动状态的情况下旋转设备时,我得到一个ClassCastException。以下是堆栈跟踪:
05-09 14:04:55.019: E/AndroidRuntime(6052): Caused by: java.lang.ClassCastException: android.widget.ListView$SavedState
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.widget.AbsListView.onRestoreInstanceState(AbsListView.java:1018)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.view.View.dispatchRestoreInstanceState(View.java:6325)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:1314)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:767)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.view.View.restoreHierarchyState(View.java:6304)
05-09 14:04:55.019: E/AndroidRuntime(6052): at android.support.v4.app.Fragment.restoreViewState(Fragment.java:417)
由于此视图的类型因方向而异,因此无需保存状态。通过
setSaveEnabled
禁用它将从onSaveInstanceState
/onRestoreInstanceState
事件中删除此控件
list = (AbsListView) findViewById(R.id.list);
list.setSaveEnabled(false);