将数据保存在片段中

时间:2019-02-01 06:53:06

标签: android android-fragments

我有一个Fragment,其中显示了一些通过ViewModel类从服务器获取的交易。我的问题是,每当我每次替换片段并再次获取所有数据时,每次通过BottomNavigation导航时,都有一个进度条,当从服务中获取数据时会出现此进度条,然后在ViewModel类中调用我的所有数据,然后通过该ViewModel类的对象,我可以在片段中设置该数据,有什么方法可以将来自viewModel类的对象的数据存储在该片段的onSavedInstanceState内部,以便在再次创建该片段时将其还原。我知道int,字符串值存储在onSavedInstanceState中,但不知道如何保存来自viewModel类的数据。

1 个答案:

答案 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

重复