Как правильно открывать фрагменты в MVVM в Android
Использую в своем проекте MVVM, возник вопрос, как правильно открывать фрагменты в MVVM? Дело в том, что фрагмент и активити у меня используют общую ViewModel для работы. Соответсвенно когда я снова после закрытия вызываю фрагмент, у него сохраняется предыдущее состяние переменных и LiveData, MutableLiveData переменых. А мне нужно новое, пустое состояние для заполнения пользователем данных.
С Navigation Architecture Component еще не знаком, хотелось бы понять как решать такие ситуации без него.
Ответы (1 шт):
Если вы хотите каждый раз получать новые данные, тут есть несколько решений:
Используйте разные ViewModels. Уничтожился фрагмент, умерла ViewModel.
Очищайте ViewModel после того как завершаете работу с фрагментами.
Можете в вашей ViewModel иметь какие-то стейты и при запуске фрагмента выбирать нужный вам стейт и в зависимости от него грузить нужные данные.
Стоит так же подумать о том на какие данные и когда вы подписываетесь. Немного странно что у вас создается новый фрагмент и подписывается на данные которые вам не нужны.
Я не до конца уверен, что вам вообще необходимо иметь одну ViewModel для сущностей в которых должны быть разные данные. Поэтому я больше склоняюсь к первому варианту. Но тут надо более полно видеть задачу.
По поводу Navigation Architecture Component. Этот фреймворк мало имеет отношения к вашей задаче. Ну т.е. это просто обертка для более удобной навигации между фрагментами, но как их заполнять он не решает.