2011-07-12 21 views
5

Para una actividad, tengo dos archivos de diseño diferentes para las orientaciones vertical y horizontal. Los elementos de una orientación tienen relación directa con los elementos en la otra orientación, excepto que pueden estar relacionados por clase base, pero no son exactamente del mismo tipo y tienen la misma identificación. Así, por ejemplo:IllegalArgumentException: clase de estado incorrecta

diseño/main_layout.xml:

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

continuación, en la disposición en tierra/main_layout.xml: CustomListView es una subclase de android.widget.AdapterView

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

" IllegalArgumentException: Wrong state class "se lanza al cambiar de orientación. ¿Es este el comportamiento esperado? No he anulado el código de cambio de configuración y estoy dejando que la actividad sea completamente destruida y reconstruida. He evitado otras instancias de tener identificadores idénticos en la jerarquía de diseño al mismo tiempo.

Respuesta

10

Establezca el valor de la vista saveEnabled en false.

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

Si bien el cambio de orientación, se trata de salvar a los estados de los puntos de vista que tienen ID, y trata de recrear la misma, mientras que la recreación de su actividad. Entonces, para su caso, un tipo no se puede convertir al otro tipo. es decir. Un ListView no se puede convertir en CustomListView.

Y luego, tendrá que manejar las dos orientaciones usted mismo.

+0

Gracias - ¡Eso hizo el truco! – jchristof

Cuestiones relacionadas