我是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/