Cha*_*kma 1 java android mvvm fragment android-jetpack
我想我的初始化视图模型对象中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);
Run Code Online (Sandbox Code Playgroud)
另一方面,public ViewModelProvider(@NonNull ViewModelStoreOwner owner)ViewModelProvider 以 ViewModelStoreOwner 为参数,在接口实现的FragmentActivity.java ViewModelStore getViewModelStore()方法中ViewModelStore可能是工厂模式。
@NonNull
        @Override
        public ViewModelStore getViewModelStore() {
            return FragmentActivity.this.getViewModelStore();
        }
Run Code Online (Sandbox Code Playgroud)
帮我初始化 ViewModel
初始化你的 viewModel 是这样的:
如果你正在使用
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
Run Code Online (Sandbox Code Playgroud)
并初始化您的 viewModel
viewModel = ViewModelProviders.of(this,viewModelFactory).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
但它现在已被弃用。因此,将依赖项更新为:
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
Run Code Online (Sandbox Code Playgroud)
并初始化您的 viewModel 如下:
viewModel = new ViewModelProvider(this,viewModelFactory).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
viewModelFactory 是可选的。