Jestem naprawdę zdezorientowany wewnętrznym stanem fragmentu. Mam Aktywność, która ma tylko jeden Fragment na raz i zastępuje go, jeśli powinien zostać pokazany inny Fragment. Z dokumentacji onSaveInstanceState
jest wywoływana TYLKO, jeśli wywoływana jest aktywność onSaveInstanceState
(która nie jest wywoływana w moim przypadku).Jak działa funkcja `onViewStateRestored` from Fragments?
Jeśli zatrzymam mój Fragment, przechowam jego stan w Singleton (tak, wiem, że nienawidzę Singletonów, ale nie był to mój pomysł). Więc muszę odtworzyć cały ViewHirarchy
, utworzyć nowe widoki (używając słowa kluczowego new
), przywrócić jego stan i zwrócić je w onCreateView
. Mam również pole wyboru wewnątrz tego widoku, z którego wyraźnie chcę NOT chcesz zapisać jego stan.
Jednak FragmentManager
chce być „inteligentna” i wzywa onViewStateRestored
z wiązką Nigdy sobie stworzył, a „przywraca” stan starego CheckBox
i stosuje ją do mojego nowego wyboru. To powoduje wiele pytań:
Czy mogę kontrolować pakiet z onViewStateRestored
?
W jaki sposób FragmentManager przyjmuje stan (prawdopodobnie zbieranego ze śmieci) CheckBoxa i stosuje go do nowego?
Dlaczego tylko zapisać stan pola wyboru (nie z TextView ??)
Więc Podsumowując: Jak onViewStateRestored
pracę?
Uwaga używam Fragmentv4, więc nie ma API> 17 wymagana onViewStateRestored