2011-07-12 48 views
5

Đối với một Hoạt động, tôi có hai tệp bố cục khác nhau cho hướng dọc và ngang. Các phần tử của một hướng có mối quan hệ trực tiếp với các phần tử theo hướng khác ngoại trừ việc chúng có thể liên quan đến lớp cơ sở nhưng không phải là cùng một kiểu chính xác và chúng có cùng một id. Vì vậy, ví dụ:IllegalArgumentException: Lớp trạng thái sai

bố trí/main_layout.xml:

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

sau đó trong cách bố trí đất/main_layout.xml: CustomListView là một lớp con của android.widget.AdapterView

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

" IllegalArgumentException: Lớp trạng thái sai "được ném khi thay đổi hướng. Đây có phải là hành vi dự kiến? Tôi đã không ghi đè mã thay đổi cấu hình và tôi cho phép hoạt động này bị phá hủy hoàn toàn và được xây dựng lại. Tôi đã tránh các trường hợp khác có cùng số nhận dạng trong phân cấp bố cục cùng một lúc.

Trả lời

10

Đặt giá trị của chế độ xem lưu thànhEnabled thành false.

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

Trong khi thay đổi định hướng, nó sẽ cố gắng để lưu các bang quan điểm mà có ID, và cố gắng để tái tạo cùng một thời gian tái hoạt động của bạn. Vì vậy, đối với trường hợp của bạn, một loại không thể được chuyển đổi thành loại khác. I E. Một ListView không thể được chuyển đổi thành một CustomListView.

Và sau đó, bạn sẽ phải tự xử lý cả hai hướng.

+0

Cảm ơn - Điều đó đã làm được điều đó! – jchristof