【发布时间】:2020-05-14 02:24:00
【问题描述】:
我是 mvvm 模式的新手。我为主要活动创建了一个 ViewModel。现在我想在主要活动中获取 ViewModel 的实例。
Stackoverflow 上的大多数教程和答案都建议使用 ViewModelProviders.of(...,但这已被弃用。
所以根据 stackoverflow 上的这个问题:ViewModelProviders is deprecated in 1.1.0 onCreate 中的主要活动,我执行以下操作(我可以发誓我已经让它运行了):mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
但是,我收到一条错误消息,告诉我没有找到合适的构造函数。
error: no suitable constructor found for ViewModelProvider(MainActivity)
另外,为了明确起见,MainActivity 应该是 ViewModelStoreOwner,我创建了一个变量
ViewModelStoreOwner vmso = this; 并将该变量放入构造函数中,如下所示:
mainActivityViewModel = new ViewModelProvider(vmso).get(MainActivityViewModel.class);
【问题讨论】:
-
您确定您对
this的引用正确吗?如果是片段,则需要使用getActivity()而不是thisiirc,如果您在侦听器或匿名类中,则必须使用MainActivity@this等 -
我在主Activity的onCreate()中调用方法
-
不,它没有。 Java代码中描述的解决方案是
boardViewModel = new ViewModelProvider(this).get(BoardViewModel.class),相当于我已经尝试过的mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);,但似乎没有合适的构造函数。
标签: android mvvm viewmodel androidx viewmodelproviders