Согласно документации :
Использовать делегат свойства by viewModels()
Kotlin или ViewModelProvider.ViewModelProvider (ViewModelStoreOwner, Factory) , передавая вфрагмент и фабрика.
Таким образом, вы можете заменить свои расширения на:
inline fun <reified T : ViewModel> FragmentActivity.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProvider(this, factory)[T::class.java]
}
inline fun <reified T : ViewModel> Fragment.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProvider(this, factory)[T::class.java]
}
И, согласно сообщению об ошибке, вы можете вместо этого использовать расширения свойств Kotlin в fragment-ktx
и activity-ktx
зависимостей и полностью удалите методы расширения.
А именно, by viewModels
и by activityViewModels
для фрагментов:
// Retrieve the ViewModel associated with this Fragment
val viewModel: MyVewModel by viewModels { myFactory }
// Retrieve the ViewModel associated with the activity
val activityViewModel: MyVewModel by activityViewModels { myFactory }
Или, если вы обращаетесь к ViewModel из самой своей деятельности, вы бы использовали by viewModels
:
// In an Activity, you can retrieve a ViewModel scoped to the Activity
// by using viewModels
val viewModel: MyVewModel by viewModels { myFactory }