Я использую компонент навигации, я хочу, чтобы модель представления разделялась между несколькими фрагментами, но они должны быть очищены, когда я оставляю фрагменты (следовательно, не привязываю их к активности). Я пытаюсь взять одно действие, много фрагментов подход. Мне удалось добиться этого, используя несколько узлов навигации и оценивая фрагменты с помощью getParentFragment, но это просто приводит к большему количеству проблем, связанных с переносом фрагментов в другие родительские фрагменты, потерей кнопки возврата, работающей без проблем, и другими хаками, чтобы заставить что-то работать, что должно быть довольно простым. Кто-нибудь знает, как этого добиться? Мне было интересно, есть ли что-нибудь с getViewModelStore, которое я мог бы использовать, учитывая изображение ниже, я хочу охватить модель представления для createCardFragment2 и использовать ее во всем после него (addPredictions, editImageFragment и другие, которые я еще не добавил), но тогда, если Я возвращаюсь к mainFragment. Я хочу очистить модели просмотра.
Кстати, я не могу просто вызвать clear в хранилище модели представления mainFragment, поскольку здесь есть другие модели представления, которые не следует очищать, я думаю, мне нужен способ сообщить навигационному узлу, каким должен быть родительский фрагмент, который, как я знаю, не будет чем-то или способом сделать модель представления новой, если я перехожу из mainFragment или cardPreviewFragment
ViewModel
с помощьюViewModelProviders
, вам необходимо указать контекст. В случае фрагмента вы помещаетеthis
, так чтоViewModel
жизнь ограничивается фрагментом.ViewModelProviders
достаточно умен, чтобы различать действие или контекст фрагмента. В случае регистрации наблюдаемых, вы должны зарегистрировать наблюдателей вonActivityCreated
, используяviewLifeCycleOwner
в качестве контекста наблюдателя. Это заставляет наблюдателя жить в соответствии с жизненным циклом фрагмента. - person Taseer   schedule 08.06.2019