转载:android ViewModelProviders被弃用解决方案
最近在研究Android Jetpack的过程中,发现Android官方网站一处错误的地方,记录下来方便后来者使用。
可直接查看下方第三点-解决方案。
另外Android-Jetpack ROOM+DataBinding+LiveData+ViewModel+Lifecycles使用可以参照我的demo:https://github.com/VcStrong/JetpackDemo.git
一、错误:在创建ViewModel对象的时候,提示ViewModelProviders已弃用。
ViewModelProviders.of():不建议使用
二、查阅官方文档发现:V2.2.0之后弃用了ViewModelProviders,建议使用new ViewModelProvider()方式
参考:https://developer.android.google.cn/jetpack/androidx/releases/lifecycle#version_220_3
image三、使用ViewModelProvider创建ViewModel
//AppCompatActivity和Fragment这两个页面对象
//父类ComponentActivity和Fragment实现了LifecycleOwner对象
//父类FragmentActivity实现了ViewModelStoreOwner对象,又继承了ComponentActivity
myViewModel = new ViewModelProvider(this).get(TestViewModel.class);
四、由于我们使用Lifecycle会用到LifecycleOwner对象,我们在Lifecycle-V2.2.0之后只能使用new ViewModelProvider(),又会用到ViewModelStoreOwner对象,所以可以参见官方文档:https://developer.android.google.cn/topic/libraries/architecture/lifecycle#lco
image
网友评论