如何在2020/21年的活动中获取ViewModel的实例? [英] How to get an Instance of ViewModel in activity in 2020/21?

查看:91
本文介绍了如何在2020/21年的活动中获取ViewModel的实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am new to the mvvm pattern. I created a ViewModel for the main activity. Now I want to get an instance of the ViewModel in the main activity.

Stackoverflow上的大多数教程和解答建议使用 ViewModelProviders.of(... ,但已弃用.

Most Tutorials and answers here on Stackoverflow suggest using ViewModelProviders.of(..., but this is depreceated.

因此,根据关于stackoverflow的以下问题: ViewModelProviders在1.1中已弃用.0 在onCreate中的主要活动,我执行以下操作(并且我发誓我已经运行了它): mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);

So according to this question on stackoverflow: ViewModelProviders is deprecated in 1.1.0 main activity in onCreate, I do the following (and I could swear I already had it running): mainActivityViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);

但是,我收到一个错误消息,告诉我没有找到合适的构造函数.

However, I am getting an error telling me, that no suitable constructor has been found.

错误:没有为ViewModelProvider(MainActivity)找到合适的构造函数

另外,要明确指出,MainActivity应该是ViewModelStoreOwner,我创建了一个变量 ViewModelStoreOwner vmso = this; 并将该变量放入构造函数中,如下所示: mainActivityViewModel = new ViewModelProvider(vmso).get(MainActivityViewModel.class);

Alternatively to make absolutely clear, that the MainActivity shall be the ViewModelStoreOwner, I created a variable ViewModelStoreOwner vmso = this; and put that variable into the constructor like so: mainActivityViewModel = new ViewModelProvider(vmso).get(MainActivityViewModel.class);

推荐答案

您应将gradle文件更新为:

You should update your gradle file to:

实现'androidx.lifecycle:lifecycle-extensions:2.2.0'

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

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

And due to this change you can pass Activity to the constructor you mentioned:

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

这篇关于如何在2020/21年的活动中获取ViewModel的实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆