Android Jetpack的SavedStateViewModelFactory如何工作? [英] How does Android Jetpack's SavedStateViewModelFactory work?

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

问题描述

我的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屋!

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