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