在片段Android Java中初始化ViewModel

时间:2020-04-23 19:38:42

标签: java android mvvm fragment android-jetpack

我正在尝试在FirstFragment.java的{​​{1}}文件中初始化我的viewmodel对象。所有这四个代码均失败。该文档对我没有太大帮助。

BasicActivity

另一方面,mViewModel = new ViewModelProvider(this).get(MyViewModel.class); mViewModel = new ViewModelProvider(requireActivity()).get(MyViewModel.class); mViewModel = new ViewModelProvider(getActivity()).get(MyViewModel.class); mViewModel = new ViewModelProvider(FirstFragment.class).get(MyViewModel.class); ViewModelProvider将ViewModelStoreOwner作为其参数,并且在public ViewModelProvider(@NonNull ViewModelStoreOwner owner)接口的FragmentActivity.java ViewModelStore getViewModelStore()方法中实现的方法可能是出厂模式。

ViewModelStore

帮我初始化ViewModel

1 个答案:

答案 0 :(得分:3)

初始化viewModel就像:

如果您使用

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

并初始化您的viewModel

viewModel = ViewModelProviders.of(this,viewModelFactory).get(MyViewModel.class);

,但现在已弃用。 因此,将依赖项更新为:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

并按如下所示初始化viewModel:

viewModel = new ViewModelProvider(this,viewModelFactory).get(MyViewModel.class);

viewModelFactory是可选的。