在片段中初始化ViewModel Android java。

问题描述 投票:0回答:1

我试图在我的视图模型对象中初始化我的 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

java android mvvm fragment android-jetpack
1个回答
2
投票

初始化你的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是可选的。

© www.soinside.com 2019 - 2024. All rights reserved.