С момента навигации 2.1.0-alpha02
:
Теперь вы можете создавать ViewModel, которые ограничены областью навигационного графа через делегат свойства navGraphViewModels () для пользователей Kotlin или с помощью API getViewModelStore ()добавлен в NavController.
Вы можете найти журнал изменений здесь и документ .
К сожалению, Коин не может поддерживать эту функцию, поскольку viewModel()
илиsharedViewModel()
был связан с деятельностью.Но поддержка nav уже запланирована в 2.1.x
, и вы можете отслеживать здесь .
На данный момент вот мое решение:
- Использование
navGraphViewModels()
вместо viewModel()
в коинах.
class DetailFr : Fragment() {
private val vm: DetailViewModel by navGraphViewModels(R.id.main_nav_graph)
}
Сделайте так, чтобы ViwModel реализовал
KoinComponent
, чтобы мы могли использовать
by inject()
вместо инжектирования конструктором.
class DetailViewModel : ViewModel(), KoinComponent {
private val repo: DetailRepository by inject()
// othetr objects you need
}
Надеюсь, это поможет