2011-07-12 11 views
5

Dla działania mam dwa różne pliki układu dla orientacji pionowej i poziomej. Elementy jednej orientacji mają bezpośredni związek z elementami w innej orientacji, z tym wyjątkiem, że mogą być powiązane przez klasę podstawową, ale nie są dokładnie tego samego typu i mają ten sam identyfikator. Tak na przykład:IllegalArgumentException: Niepoprawna klasa stanu

układ/main_layout.xml:

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

następnie w układ-land/main_layout.xml: CustomListView jest podklasą android.widget.AdapterView

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

" IllegalArgumentException: Wrong state class "jest zgłaszany podczas zmiany orientacji. Czy to oczekiwane zachowanie? Nie przesłaniałem kodu zmieniającego konfigurację i pozwalam, aby działanie zostało całkowicie zniszczone i zrekonstruowane. Uniknąłem innych przypadków posiadania identycznych identyfikatorów w hierarchii układu w tym samym czasie.

Odpowiedz

10

Ustawia wartość widoku saveEnabled na false.

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

Przy zmianie orientacji, próbuje zapisać stany poglądów, które mają identyfikatory i próbuje odtworzyć to samo podczas odtwarzając swoją aktywność. Tak więc, w twoim przypadku, jednego typu nie można przekonwertować na inny typ. to znaczy. ListView nie można przekonwertować na CustomListView.

A potem będziesz musiał sam sobie poradzić z obydwoma orientacjami.

+0

Dzięki - To załatwiło sprawę! – jchristof

Powiązane problemy