我正在尝试在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
答案 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是可选的。