我有一个Fragment,其中显示了一些通过ViewModel类从服务器获取的交易。我的问题是,每当我每次替换片段并再次获取所有数据时,每次通过BottomNavigation导航时,都有一个进度条,当从服务中获取数据时会出现此进度条,然后在ViewModel类中调用我的所有数据,然后通过该ViewModel类的对象,我可以在片段中设置该数据,有什么方法可以将来自viewModel类的对象的数据存储在该片段的onSavedInstanceState内部,以便在再次创建该片段时将其还原。我知道int,字符串值存储在onSavedInstanceState中,但不知道如何保存来自viewModel类的数据。
答案 0 :(得分:0)
这是您要完成的任务的快速示例:
class MyModelFactory implements ViewModelProvider.Factory {
private final Bundle bundle;
public MyModelFactory(Bundle bundle) {
this.bundle = bundle;
}
@Override
public MyViewModel create(Class modelClass) {
MyViewModel viewModel = new MyViewModel();
viewModel.readFrom(bundle);
return viewModel;
}
然后保存您的实例:
@Override
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
viewModel.writeTo(bundle);
}
参考文章:https://proandroiddev.com/customizing-the-new-viewmodel-cf28b8a7c5fc
这是Architecture components ViewModel vs. savedInstanceState bundle
的重复