Я действительно смущен внутренним состоянием Фрагмента.
У меня есть одно действие, удерживающее Фрагмент сразу и заменяющее его, если нужно показать другой фрагмент. Из документов onSaveInstanceState
вызывается ТОЛЬКО, если вызываются вызовы Activity onSaveInstanceState
(которые не вызываются в моем случае).
Если я оставлю свой Фрагмент, я сохраню его состояние в Синглтоне (да, я знаю, что я ненавижу Синглтонов тоже, но не был моей идеей сделать это).
Поэтому я воссоздал всю ViewHirarchy, создаю новые представления (используя ключевое слово new
), восстановит его состояние и верну их в onCreateView
.
У меня также есть флажок внутри этого представления, из которого я явно НЕ сохраняю его состояние. Однако FragmentManager хочет быть "умным" вызовом OnViewStateRestored
с Bundle, который я никогда не создавал, и "восстанавливает" состояние старого флажка и применяет его к моему НОВОМ флажку. Это вызывает так много вопросов:
Можно ли управлять пакетом из OnViewStateRestored
?
Как FragmentManager принимает состояние (возможно, garbageCollected) CheckBox и применяет его к новому?
Почему это только сохраняет состояние флажка (Not of TextViews?)
Итак, чтобы подвести итог: как работает OnViewStateRestored
?
Примечание. Я использую Fragmentv4, поэтому для OnViewStateRestored