IllegalArgumentException: неправильный класс состояния

Для Activity у меня есть два разных файла макета для портретной и альбомной ориентации. Элементы одной ориентации имеют прямое отношение к элементам в другой ориентации, за исключением того, что они могут быть связаны базовым классом, но не являются одним и тем же типом, и они имеют одинаковый идентификатор. Так, например:

макет / 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: неправильный класс состояний» бросается при изменении ориентации. Это ожидаемое поведение? Я не переопределял код изменения конфигурации, и я разрешаю полностью уничтожить и реконструировать деятельность. Я избегал других экземпляров одинаковых идентификаторов в иерархии макета одновременно.

    Установите для значения вида saveEnabled значение false.

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

    При изменении ориентации он пытается сохранить состояния просмотров, имеющих идентификаторы, и пытается воссоздать их при воссоздании вашей активности. Таким образом, для вашего случая один тип не может быть преобразован в другой тип. то есть. ListView не может быть преобразован в CustomListView.

    И тогда вам придется самому ориентироваться в обеих ориентациях.