最近在研究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

 

三、使用ViewModelProvider创建ViewModel

//AppCompatActivity和Fragment这两个页面对象
//父类ComponentActivity和Fragment实现了LifecycleOwner对象
//父类FragmentActivity实现了ViewModelStoreOwner对象,又继承了ComponentActivity
*ViewModel viewModel = new ViewModelProvider(getActivity()/this).get(*ViewModel.class);

四、由于我们使用Lifecycle会用到LifecycleOwner对象,我们在Lifecycle-V2.2.0之后只能使用new ViewModelProvider(),又会用到ViewModelStoreOwner对象,所以可以参见官方文档:https://developer.android.google.cn/topic/libraries/architecture/lifecycle#lco

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐