Сохраняют ли компоненты навигации popBackStack() состояние фрагмента?

Когда я перехожу от одного фрагмента к другому с помощью новых компонентов навигации, я могу сделать это успешно со следующим:

btn_walk.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_action))

Теперь, если я вытащу стопку из целевого фрагмента с помощью

findNavController().popBackStack()

Фрагмент, запустивший этот фрагмент, снова воссоздает себя, но состояние не сохраняется, я искал, как это исправить, но я действительно не знаю, как на самом деле сделать функцию .add с помощью navigate() из навигации компоненты

Сохраняют ли компоненты навигации popBackStack() состояние фрагмента?

Этот gif показывает навигацию от одного фрагмента к другому, при извлечении стека из целевого фрагмента он воссоздает фрагмент, который запустил этот фрагмент, вместо сохранения его состояния.

Использование метода fragmenttransaction.add() поддерживает экземпляр этого фрагмента живым, даже если я выталкиваю задний стек.

Есть ли способ сделать то же самое с компонентами навигации?

Я тоже читал этот Проблема перезагрузки фрагмента архитектуры навигации но непонятно как его решать.

3
0
2 315
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Фрагменты автоматически восстанавливают свое сохраненное состояние, когда они возвращаются из заднего стека: это верно для нашего без навигации. Похоже, проблема в том, как вы закодировали свой фрагмент.

Вы можете подтвердить, что это проблема с вашим фрагментом, включив «Не сохранять действия», нажав кнопку «Домой», затем вернувшись в свое приложение и посмотрев, полностью ли восстанавливает фрагмент свое состояние. Вы также можете протестировать случай, когда вы правильно обрабатываете изменения конфигурации (т. е. поворачиваете устройство) — опять же, вы должны быть в состоянии восстановить свое состояние именно там, где вы были. Если вы справитесь с обоими этими случаями, то он будет отлично работать и в навигации.

Я настоятельно рекомендую задавать отдельные вопросы, если у вас есть конкретное представление и т. д., с которыми у вас возникают трудности при сохранении/восстановлении его состояния в любом из этих случаев.

ianhanniballake 24.07.2019 04:32

Спасибо Ян, завтра посмотрю

Gastón Saillén 24.07.2019 06:49

Его вопрос на самом деле закономерен. Это ошибка компонента навигации, и она обсуждается здесь. stackoverflow.com/questions/50485988/… также есть сообщение об ошибке issuetracker.google.com/issues/80029773

TatiOverflow 03.03.2021 17:39

@TatiOverflow - нет, это не имеет отношения к этой проблеме. Фрагменты на заднем стеке уже правильно сохраняют и восстанавливают свое состояние. Эта ссылка на проблему предназначена специально для фрагментов нет в заднем стеке.

ianhanniballake 03.03.2021 18:24

Другие вопросы по теме