2011-07-12 63 views
5

對於活動,我有兩個不同的佈局文件用於縱向和橫向方向。一個方向的元素與另一個方向的元素有直接關係,除了它們可能與基類有關但不是完全相同的類型並且它們具有相同的id。因此,例如:IllegalArgumentException:錯誤的狀態類

佈局/ main_layout.xml:

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

然後在佈局土地/ 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:更改方向時拋出錯誤的狀態類「。這是預期的行爲?我沒有重寫配置更改代碼,而是讓活動完全被破壞和重建。我避免了同時在佈局層次結構中具有相同標識符的其他實例。

回答

10

將視圖的值saveEnabled設置爲false。

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

而改變方向,它試圖保存的具有ID的意見狀態,並嘗試在重新創建您的活動,以創建相同。所以,對於你的情況,一種類型不能轉換爲另一種類型。即。一個ListView不能被轉換成一個CustomListView。然後,你將不得不自己處理兩個方向。

+0

謝謝 - 這伎倆! – jchristof