другой. В первом фрагменте есть ВьюМодель, которая использует данные из БД. Из этого фрагмента по кнопке запускается поверх него новый фрагмент, который тоже использует VM, через неё делает изменения в этой БД.
Я использовал инициализацию фабрикой ВьюМоделей в обоих фрагментах через by activityViewModels {}. Т.е. как я понимаю, первый и второй фрагменты использовали один и тот же объект ВьюМодели. Так что при возвращении со второго фрагмента на первый, изменения, сделанные во втором, сразу отображались в первом.
А теперь я на Даггере использую инициализацию ВьюМоделей фабрикой, но фабрикой, обращающейся к ViewModelModule (использую Модуль), и с помощью ViewModelProvider и уже не в блоке activityViewModels, а в by lazy {} , но теперь изменения уже не отображаются сразу по возвращении со второго фрагмента на первый.
Подскажите, пожалуйста, как сделать, чтоб с Даггером была одна общая VM?
Решил проблему?
Да, спасибо! Помогли здесь) Помогло использовать либо фэктори в by activityViewModels, либо передача во ViewModelProvider общего владельца ВьюМодели (application или activity). Говорили, что лучше, чтоб ViewModel была разная для разных Фрагментов, и не понимаю, делает ли инициализация первым вариантом именно разные ВьюМодели
Обсуждают сегодня