如何获得一个ViewModel? [英] How to get a ViewModel?

查看:266
本文介绍了如何获得一个ViewModel?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想在我的Fragment(扩展Fragment)中引用我的ViewModel.class(从AndroidViewModel扩展)。到处都是这样描述的:

I just want to get a reference in my Fragment (extends Fragment) to my ViewModel.class (extends from AndroidViewModel). This is how it is described everywhere:

UserModel userModel = ViewModelProviders.of(getActivity()).get(UserModel.class);

在Android开发人员上的描述

...,但很早以前就不推荐使用ViewModelProviders。

..., but ViewModelProviders is deprecated since long ago.

*该类在API级别1.1.0中已弃用。 *

*This class was deprecated in API level 1.1.0. *

我无法导入以下类:
android.arch.lifecycle。[ViewModelProviders]

I can't import the class with: android.arch.lifecycle.[ViewModelProviders]

它只提供ViewModelProvider和其他东西。

it just offers ViewModelProvider and other stuff.

我如何获得UserModel.class的实例

How am I able to get an instance of my UserModel.class?

推荐答案


但是ViewModelProviders早就被弃用了

but ViewModelProviders is deprecated since long ago

ViewModelProviders 。因此,使用 ViewModelProviders

ViewModelProviders.of(yourFragment).get(UserModel.class)

个,其中 ViewModelProviders ,例如其构造函数,但总体上不是这样。

There are pieces of ViewModelProviders that are deprecated, such as its constructor, but the class overall is not.

更新:2020-05-28 现在 ViewModelProviders 已弃用。在Kotlin中,使用 by viewModels()和相关的属性委托。在Java中,使用 new ViewModelProvider(...)。get(UserModel.class)(用于 ... 取决于这些视图模型的范围。

UPDATE: 2020-05-28 Now ViewModelProviders is deprecated. In Kotlin, use by viewModels() and related property delegates. In Java, use new ViewModelProvider(...).get(UserModel.class) (for various values of ... depending on the scope of those viewmodels).

这篇关于如何获得一个ViewModel?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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