有的小伙在刚开始用ViewModel的时候照着文档写下:
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
但是提示ViewModelProviders这个类找不到怎么回事呢?
网上乱说一堆,是因为缺少依赖,sdk中默认包含的了ViewModel但是没有包含扩展:
api "android.arch.lifecycle:extensions:1.1.1"
加上就好了
2019年12月11日 更新:
在androidx的新版本中,ViewModelProviders已经弃用了哦,
inline fun <reified VM> IVMView<*>.obtainViewModel(view: IVMView<*> = this): VM where VM : ViewModel, VM : IViewModel {
if (view is FragmentActivity) {
return ViewModelProvider(view).get(VM::class.java)
} else if (view is Fragment) {
return ViewModelProvider(view).get(VM::class.java)
}
throw IllegalStateException("IView implementation mast be Fragment or FragmentActivity")
}
kotlin项目直接依赖api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"就可以了,使用androidx.lifecycle.ViewModelProvider创建就可以了.

本文讲解了在使用ViewModel时遇到ViewModelProviders类找不到的问题,并提供了解决方案。指出需要添加对应的依赖库,对于不同版本的AndroidX提供了具体的依赖代码。适用于正在学习或使用Android生命周期组件的开发者。

997

被折叠的 条评论
为什么被折叠?



