我正在尝试在片段中实现ViewModel,LiveData。在遍历媒体博客之后,我尝试在声明ViewModel对象时使用getViewLifecycleOwner()方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
viewModel = new ViewModelProvider(getViewLifecycleOwner()).get(MainActivityViewModel.class);
}但它会显示以下错误,
androidx.lifecycle.ViewModelStoreOwner in ViewModelProvider不能应用于androidx.lifecycle.LifeCycleOwner

当我试图将其转换为ViewModelStoreOwner时,应用程序通过显示下面的错误而崩溃,
不能将java.lang.ClassCastException: androidx.fragment.app.FragmentViewLifecycleOwner转换为androidx.lifecycle.ViewModelStoreOwner
如何使用Fragment有效地声明ViewModel的生命周期?
发布于 2020-02-28 06:24:07
使用此方法对视图模型对片段进行范围调整:
viewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);如果你想把它的范围限定在你的活动范围内,你可以这样做:
viewModel = new ViewModelProvider(requireActivity()).get(MainActivityViewModel.class);发布于 2020-03-03 16:37:41
片段是LifecycleOwner的一个子类。因此,您可以直接将Fragment引用传递给LifecycleOwner参数。
密码会是这样的。
viewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);https://stackoverflow.com/questions/60446265
复制相似问题