#android #android-fragments #android-lifecycle #screen-rotation
#Android #android-фрагменты #android-жизненный цикл #поворот экрана
Вопрос:
(Я знаю, что этот вопрос задавался много раз раньше, но ни один из ответов, которые я прочитал, не помог.)
После поворота моего устройства мой фрагмент воссоздается, но пакет, полученный в onCreate / onViewStateRestored / etc., всегда равен нулю. Фрагмент имеет действительный идентификатор, а для параметра retainInstance установлено значение false.
Я пишу в пакет, предоставленный методу onSaveInstanceState, который вызывается, как и ожидалось, при повороте устройства. После поворота также вызываются все ожидаемые обратные вызовы жизненного цикла (onCreate, onActivityCreated, onViewStateRestored и т. Д.). Однако в каждом случае предоставленный пакет равен нулю.
Все, что я прочитал по этой теме, указывает на то, что фрагмент должен получить пакет, который был записан в onSaveInstanceState . Единственное, что я могу придумать, что может быть необычным, это то, что фрагмент находится внутри компонента графа навигации. Обратите внимание, что я не переопределяю onSaveInstanceState в действии.
Что может привести к тому, что пакет моего фрагмента станет нулевым после поворота?
Комментарии:
1. Начиная с фрагмента 1.1.0-alpha03 еще в декабре 2018 года, восстановленным фрагментам всегда присваивается значение, отличное от нуля
Bundle
. Какую версию фрагментов вы используете (пожалуйста, укажитеdependencies
раздел вашегоbuild.gradle
файла)? Пожалуйста, также укажите XML-файл и метод макета вашей активностиonCreate()
.2. «androidx.navigation:фрагмент навигации: 2.3.1»
Ответ №1:
Оказывается, что переопределение onCreate
в Activity и передавало null вместо savedInstanceState super.onCreate
.