我是mvvm模式的新手。我为主要 Activity 创建了一个ViewModel。现在,我想在主 Activity 中获取ViewModel的实例。

关于Stackoverflow的大多数教程和答案都建议使用ViewModelProviders.of(...,但已弃用。

因此,根据这个关于stackoverflow的问题:ViewModelProviders is deprecated in 1.1.0 onCreate中的主要 Activity ,我执行以下操作(并且我发誓我已经运行了它):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文件更新为:



由于此更改,您可以将Activity传递给您提到的构造函数:

mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);

关于android - 如何在2020/21年的 Activity 中获取ViewModel的实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59952673/

10-12 00:22