我试图在我的视图模型对象中初始化我的 FirstFragment.java
的文件 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);
另一方面: public ViewModelProvider(@NonNull ViewModelStoreOwner owner)
ViewModelProvider以ViewModelStoreOwner为参数,在 FragmentActivity.java
ViewModelStore getViewModelStore()
方式 ViewModelStore
接口的实现可能是在一个工厂模式。
@NonNull
@Override
public ViewModelStore getViewModelStore() {
return FragmentActivity.this.getViewModelStore();
}
帮助我初始化ViewModel
初始化你的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是可选的。