Я создал тестовое действие, которое обновляет некоторый текст в моей MyViewModel.
Я хотел бы наблюдать эти изменения в Фрагмент , но когда я использую
MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
это дает мне другой экземпляр MyViewModel, чем тот, который использовался в действии, что приводит к тому, что мой onChanged()
обратный вызов во фрагменте не вызывается.
Только когда я изменяю тот же самый фрагмент кода на
HomeViewModel homeViewModel = new ViewModelProvider(getActivity()).get(HomeViewModel.class);
получает ли фрагмент тот же экземпляр MyViewModel, что и действие - поэтому успешно вызывается onChanged()
.
Однако я не уверен, если использовать getActivity()
в качестве ViewModelStoreOwner - это правильный способ работы, поскольку я нигде не видел этого ни в каких примерах. Мне интересно, может ли быть лучший ViewModelStoreOwner, который я должен использовать в этом случае?