我是 mvvm 模式的新手。我为主要活动创建了一个 ViewModel。现在我想在主活动中获取 ViewModel 的实例。
Stackoverflow 上的大多数教程和答案都建议使用ViewModelProviders.of(...
,但这已被弃用。
所以根据 stackoverflow 上的这个问题:ViewModelProviders 在 1.1.0 中已弃用 https://stackoverflow.com/questions/53903762/viewmodelproviders-is-deprecated-in-1-1-0,inonCreate 中的主要活动,我执行以下操作(我可以发誓我已经让它运行了):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);
您应该将 gradle 文件更新为:
实现 'androidx.lifecycle:lifecycle-extensions:2.2.0'
由于此更改,您可以将 Activity 传递给您提到的构造函数:
mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)