如何获得一个ViewModel? [英] How to get a 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);
...,但很早以前就不推荐使用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)
(用于 ... $ c $的各种值) c>取决于这些视图模型的范围。
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屋!