Как мне перейти из ViewModel?
Ответ, пожалуйста, не надо.ViewModel предназначен для хранения и управления данными, связанными с пользовательским интерфейсом.
Новый ответ
В моих предыдущих ответах я говорил, что мы не должны переходить из ViewModel, и причина в том, что для навигации ViewModel должна иметь ссылки на Activity/ Фрагменты, которые я считаю (возможно, не самыми лучшими, но все же верю в это) никогда не являются хорошей идеей.
Но в рекомендуемой архитектуре приложений от Google упоминается, что мы должны управлять пользовательским интерфейсом измодель .И после того, как я подумаю, что они имеют в виду под этим?
Итак, я проверил пример из "android-Architecture" и нашел интересный способ, как Google это сделал.
Пожалуйста, проверьте здесь: todo-mvvm-databinding
Оказывается, они действительно управляют пользовательским интерфейсом модели .Но как?
- Они создали интерфейс TasksNavigator , который в основном просто навигационный интерфейс.
- Затем в TasksViewModel у них есть этоссылка на TaskNavigator, чтобы они могли управлять пользовательским интерфейсом без прямой ссылки на действия / фрагменты.
- Наконец, TasksActivity реализовала TasksNavigator для предоставления подробных сведений о каждом действии навигации, а затем установила для навигатора значение TasksViewModel.