IllegalArgumentException:状态类错误



对于Activity,我有两个不同的纵向和横向布局文件。一个方向的元素与另一个方向的元素有直接关系,除了它们可能通过基类关联,但不是完全相同的类型,并且它们确实具有相同的id。例如:

布局/main_layout.xml:

...
<ListView
 android:id="@+id/current_news_list"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"/>

然后在layout-land/main_layout.xml中:CustomListView是android.widget.AdapterView的子类

...
<CustomListView 
 android:id="@+id/current_news_list"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"/>

当改变方向时抛出"IllegalArgumentException: Wrong state class"。这是预期的行为吗?我没有覆盖配置更改代码,我让活动被完全销毁和重建。我已经避免了在布局层次结构中同时具有相同标识符的其他实例。

将视图的值saveEnabled设置为false

http://developer.android.com/reference/android/view/View.html attr_android: saveEnabled

当改变方向时,它尝试保存具有id的视图的状态,并在重新创建activity时尝试重新创建相同的状态。因此,对于您的情况,一种类型不能转换为另一种类型。ie。ListView不能转换为CustomListView。

然后,你需要自己处理两个方向

相关内容

  • 没有找到相关文章

最新更新