我的viewmodel-savestate版本是implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03'
在1.0.0-alpha01版本中,我可以使用
MyViewModel myVM = new ViewModelProvider(this, new SavedStateVMFactory(this)).get(MyVM.class);
用savestate创建viewmodel,
但在1.0.0-alpha03版本中,
SavedStateVMFactory
无法工作,我需要使用
new SavedStateViewModelFactory
,但我不知道第二个参数是什么意思,代码如下所示:
myVM = new ViewModelProvider(this, new SavedStateViewModelFactory(getApplication(),xxxxxxx)).get(MyVM.class);
我在android开发者网站上找不到与此有关的任何文档
最佳答案
按照 SavedStateRegistryOwner
documentation,Fragment
和AppCompatActivity
都实现SavedStateRegistryOwner
,因此您只需传递this
即可:
myVM = new ViewModelProvider(this,
new SavedStateViewModelFactory(getApplication(), this))
.get(MyVM.class);
只要确保您使用的是AppCompat
1.1.0
,即AppCompatActivity
(及其基类FragmentActivity
和ComponentActivity
)开始实现SavedStateRegistryOwner
时。关于android - Android Jetpack的SavedStateViewModelFactory如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57838759/