我使用ViewModelProviders
。但是今天,在更新库之后,出现了30条消息。当我了解到ViewModelProviders
不再可用,您需要替换它时,我查看了developer.google,但不知道要替换什么?我的代码:
inline fun <reified T : ViewModel> FragmentActivity.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProviders.of(this, factory)[T::class.java]
}
inline fun <reified T : ViewModel> Fragment.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProviders.of(this, factory)[T::class.java]
}
你能解释一下为什么它过时了吗
2条答案
按热度按时间wsewodh21#
根据文件:
使用
by viewModels()
Kotlin属性委托或ViewModelProvider.ViewModelProvider(ViewModelStoreOwner,Factory),传入片段和工厂。因此,您可以将扩展替换为:
而且,根据错误消息,您可以在
fragment-ktx
和activity-ktx
依赖项中使用Kotlin属性扩展,并完全删除扩展方法。即片段的
by viewModels
和by activityViewModels
:或者,如果您从Activity本身访问ViewModel,则可以使用其
by viewModels
:zpqajqem2#
如果您的ViewModel具有一些依赖项,则可以使用delegate ...