Сохранить данные фрагмента при переключении на другой фрагмент с помощью навигации - PullRequest
0 голосов
/ 23 марта 2020

Я только начал свой первый Android проект. Мое приложение содержит два фрагмента, которые связаны с контроллером навигации.

На данный момент все, что у меня есть в моем первом фрагменте, это только два EditText. Однако я понимаю, что когда я переключаюсь на другой фрагмент и возвращаюсь назад, введенные тексты очищаются.

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

Я уже пытался сохранить их в onSaveInstanceState () , как предполагает большинство людей, однако это не работает. Итак, я сделал небольшой тест, оказалось, что onSaveInstanceState () даже не вызывается, когда я переключаю фрагмент. Вместо этого onDestroy () и onPause () , когда люди не рекомендуют сохранять мои данные

Я также пытался использовать ViewModel для сохранить данные, но кажется, что данные, сохраненные в ViewModel, также исчезают, когда я переключаюсь на исходный фрагмент.

Так что я не уверен, что делать? Спасибо!

1 Ответ

1 голос
/ 23 марта 2020

Вы должны использовать ViewModel, создать свою ViewModel по Activity вместо Fragment, внутри вашего метода Fragment.onViewCreated ()

val myViewModel = ViewModelProvider(activity as ViewModelStoreOwner).get(MyViewModel::class.java)
...