ПроблемыonSaveInstanceState вызывается после фрагмента заменен
onSaveInstanceState вызываются при повороте устройства для фрагмента, который был заменен в транзакции фрагмента. Это вызывает IllegalStateException с сообщением «Содержимое зрения еще не создан.
Исследования
Я нашел следующие два ответа, которые кажутся наиболее актуальными
Using onSaveInstanceState with fragments in backstack?
onSaveInstanceState of previous fragment is called on-orientation of current fragment
Что я пробовал уже
После ответа на второй вопрос я удалил addtobackstack из транзакции фрагмента, но все равно получаю ошибку.
Я прочитал принятый ответ на первый вопрос, но не уверен, как получить ссылку на фрагмент внутри onSaveInstanceState для активности. Я также особо не хочу сохранять этот фрагмент, когда пользователь покидает этот фрагмент, его состояние не нужно сохранять.
Я также попытался добавить if (getView() != null) {...}
к onSaveInstanceState во фрагменте, но это не имело значения.
Вопросы
- Почему onSaveInstanceState называют даже если фрагмент не был добавлен в стек обратно?
- Правильный подход к тому, чтобы каким-то образом убить фрагмент, когда пользователь покончил с этим?
- Есть ли другое решение?
Заранее благодарю вас за помощь.
Эндрю
Редактировать
Если удалить addtobackstack(null)
от операции, которая добавляет фрагмент и тот, в котором она снимается проблема уходит, но потом так же важная часть функциональности .. . Я мог бы добавить этот случай к моей функции onBackPressed override, но это кажется немного взломанным, и не в хорошем смысле.