【发布时间】:2020-02-28 06:18:34
【问题描述】:
我正在尝试在 Fragment 中实现 ViewModel、LiveData。通过Medium Blog 之后,我尝试在声明ViewModel 对象时使用getViewLifecycleOwner() 方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
viewModel = new ViewModelProvider(getViewLifecycleOwner()).get(MainActivityViewModel.class);
}
但它显示以下错误,
ViewModelProvider 中的androidx.lifecycle.ViewModelStoreOwner 不能应用于 androidx.lifecycle.LifeCycleOwner
当我尝试将其投射到 ViewModelStoreOwner 时,应用程序崩溃并显示以下错误,
java.lang.ClassCastException: androidx.fragment.app.FragmentViewLifecycleOwner 无法转换为 androidx.lifecycle.ViewModelStoreOwner
如何有效地用ViewModel声明Fragment的生命周期?
【问题讨论】:
-
博文描述的问题是在
observe时使用了错误的LifecycleOwner,而不是获取 ViewModel。
标签: android mvvm viewmodel classcastexception android-viewmodel