Android Jetpack的SavedStateViewModelFactory如何工作? [英] How does Android Jetpack's SavedStateViewModelFactory work?
问题描述
我的viewmodel-savestate版本是实现'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03'
my viewmodel-savestate version is
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03'
在1.0.0-alpha01版本中,我可以使用
in version 1.0.0-alpha01 ,i can use
MyViewModel myVM = new ViewModelProvider(this, new SavedStateVMFactory(this)).get(MyVM.class);
要创建带有savestate的viewmodel,但在1.0.0-alpha03版本中,
to create viewmodel with savestate, but in version 1.0.0-alpha03 ,
SavedStateVMFactory
无法完成工作,我需要使用 new SavedStateViewModelFactory
,但是我不知道第二个参数是什么意思,代码如下所示:
cant work , i need to use new SavedStateViewModelFactory
but i dont konw what is the second params means,
the code may look like this below:
myVM = new ViewModelProvider(this, new SavedStateViewModelFactory(getApplication(),xxxxxxx)).get(MyVM.class);
可悲的是,我在android开发者网站上找不到与此有关的任何文件
and i cant find any document about this in android developer website, sad
推荐答案
按照 SavedStateRegistryOwner
文档, Fragment
和 AppCompatActivity
都实现了 SavedStateRegistryOwner
,因此您只需传入 this
:
As per the SavedStateRegistryOwner
documentation, both Fragment
, and AppCompatActivity
implement SavedStateRegistryOwner
, so you can just pass in this
:
myVM = new ViewModelProvider(this,
new SavedStateViewModelFactory(getApplication(), this))
.get(MyVM.class);
只要确保您使用的是AppCompat 1.1.0
,这就是 AppCompatActivity
(及其基类 FragmentActivity
和 ComponentActivity
)开始实施 SavedStateRegistryOwner
.
Just make sure you're using AppCompat 1.1.0
, which is when AppCompatActivity
(and its base class, FragmentActivity
and ComponentActivity
) started to implement SavedStateRegistryOwner
.
这篇关于Android Jetpack的SavedStateViewModelFactory如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!