我正在使用 ViewModelProviders。但是今天,更新库后,出现了 30 条消息。据我了解, ViewModelProviders 已不再可用并需要更换,我查看了 developer.google 但不明白用什么来代替它?我的代码:
**
* Kotlin extensions for dependency injection
*/
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]
}
你能解释为什么它被弃用吗?
回复
根据文档:
因此,您可以将扩展替换为:
而且,根据错误消息,您可以改为在 fragment-ktx 和 activity-ktx 依赖项中使用 Kotlin 属性扩展,并完全删除您的扩展方法。
即,通过视图模型和片段的活动视图模型:
或者,如果您从 Activity 本身访问 ViewModel,则可以通过 viewModel 使用它: