Tôi thực sự bối rối với trạng thái nội bộ của một Fragment. Tôi có một Hoạt động chỉ giữ một Fragment cùng một lúc và thay thế nó, nếu một Fragment khác sẽ được hiển thị. Từ tài liệu onSaveInstanceState
được gọi là CHỈ nếu hoạt động onSaveInstanceState
đang được gọi (không được gọi trong trường hợp của tôi).Làm cách nào để `onViewStateRestored` từ Phân đoạn hoạt động?
Nếu tôi dừng phân đoạn của mình, tôi sẽ lưu trữ trạng thái của bản thân trong một Singleton (vâng, tôi biết tôi ghét Singletons, nhưng không phải là ý tưởng của tôi để làm như vậy). Vì vậy, tôi phải tạo lại toàn bộ ViewHirarchy
, tạo Chế độ xem mới (bằng cách sử dụng từ khóa new
), khôi phục trạng thái của nó và trả lại chúng trong onCreateView
. Tôi cũng có Hộp kiểm bên trong Chế độ xem này mà từ đó tôi làm rõ ràng KHÔNG muốn lưu trữ trạng thái của nó.
Tuy nhiên FragmentManager
muốn trở thành "thông minh" và kêu gọi onViewStateRestored
với một Bundle Tôi không bao giờ tạo ra bản thân mình, và "khôi phục" tình trạng cũ CheckBox
và áp dụng nó để CheckBox MỚI của tôi. Điều này đưa ra rất nhiều câu hỏi:
Tôi có thể kiểm soát gói từ onViewStateRestored
không?
Trình quản lý phân đoạn có trạng thái của hộp kiểm (có thể đã thu thập rác) và áp dụng nó cho hộp kiểm mới?
Tại sao nó chỉ lưu trạng thái của Checkbox (Không của TextView ??)
Vì vậy, để tóm tắt: Làm thế nào để onViewStateRestored
làm việc?
Note Tôi đang sử dụng Fragmentv4, vì vậy không API> 17 cần thiết cho onViewStateRestored