Tôi có một thành phần tùy chỉnh với một RadioGroup có hai RadioButton, id @+id/radioButton1
và @+id/radioButton2
. Mặt khác, có một TabActivity với năm tab. Trên mỗi tab, thành phần này được sử dụng nhiều lần.Lượt xem có cùng id nhận được cùng một attrs khi khôi phục
Đây là vấn đề, khi định hướng thay đổi và hoạt động được tạo lại, tất cả RadioButton được nạp cùng một attrs, bao gồm android:text
, android:margin
và thậm chí cả attrs theo kiểu mà tôi đã tạo. Nó cũng xảy ra với tất cả các CheckBox có cùng id.
Tôi đã dành một chút thời gian để tìm hiểu lý do tại sao điều này xảy ra và kết luận rằng android đang làm điều đó trong onRestoreInstanceState. Nếu tôi bình luận dòng gọi siêu phương pháp nó hoạt động tốt.
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// super.onRestoreInstanceState(savedInstanceState);
}
Đây có phải là lý do không? Hoặc những gì có thể làm để gây ra điều này?
Tôi đoán rằng đó không phải là hành vi bình thường vì khi chế độ xem tùy chỉnh được tạo, chế độ xem đó sẽ tăng cùng một bố cục với cùng chế độ xem có cùng id. Vì vậy, không thể tạo nhanh chế độ xem tùy chỉnh mới tạo các id khác nhau cho con của nó mỗi lần. Sử dụng mã ở trên hoặc android:configChanges
trên tệp kê khai có vẻ là một giải pháp không tốt đối với tôi. Vì vậy, bất kỳ trợ giúp được đánh giá cao.
Tôi đã có kinh nghiệm này quá. Trong thực tế, tôi đã dành một vài ngày cố gắng theo dõi lỗi này xuống. Phần tồi tệ nhất là, trong trường hợp của tôi, những quan điểm nhận được một giá trị xấu và điều đó ngay lập tức kích hoạt sự thay đổi trong trạng thái của sự vật được đại diện bởi Chế độ xem, điều đó có nghĩa là tôi đang làm hư hỏng trạng thái của một số người khác. Tôi sử dụng lại chế độ xem tùy chỉnh của mình ở các vị trí khác nhau trong Hoạt động và tất nhiên là có thể sử dụng lại tệp XML được ưa thích. –