【发布时间】:2020-04-23 19:38:42
【问题描述】:
我正在尝试在BasicActivity 的FirstFragment.java 文件中初始化我的视图模型对象。这四个代码都失败了。文档对我帮助不大。
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 为参数,在ViewModelStore 接口的FragmentActivity.java ViewModelStore getViewModelStore() 方法中实现的可能是工厂模式。
@NonNull
@Override
public ViewModelStore getViewModelStore() {
return FragmentActivity.this.getViewModelStore();
}
帮我初始化 ViewModel
【问题讨论】:
-
“所有这四个代码都失败了” - 您是否遇到运行时错误?如果是,Logcat 中有哪些错误信息?请展示更多您的代码/项目结构(ViewModel 呢?及其父类、构造函数...)TL;DR 请添加足够的信息,以便我们设置一个小示例应用程序并尝试重现错误
-
我已经解决了。实际上是房间注释依赖项使我无法创建数据库单音对象并最终无法初始化视图模型。
标签: java android mvvm fragment android-jetpack