之前一直都是这么写的

pageViewModel = ViewModelProviders.of(this).get(PageViewModel.class);  //参数this是当前fragment

后来发现,这么写,问题很大==

当我们使用ViewPager(或ViewPager2)时,在Fragment重建后,ViewModel会被重新创建(与Fragment重建前的ViewModel不是同一个)

后来我改成了这样

pageViewModel = ViewModelProviders.of(this).get(key, PageViewModel.class);

以为传入参数key后就ok了,然而ViewModel仍然被重建了

直到改成这样,才万事大吉^_^

pageViewModel = ViewModelProviders.of(requireActivity()).get(key, PageViewModel.class);

参考链接:Fragment Communication using ViewModel - AndroidWave

 

相关文章:

  • 2021-05-03
  • 2021-09-01
  • 2021-06-16
  • 2021-11-17
  • 2021-11-08
  • 2021-12-23
  • 2021-09-10
猜你喜欢
  • 2021-05-19
  • 2021-05-15
  • 2021-12-25
  • 2021-05-22
  • 2022-01-14
  • 2022-12-23
  • 2021-10-24
相关资源
相似解决方案