Fragment和ViewPager多层嵌套,容易出现内层fragment某些页面数据丢失

时间:2022-04-18 20:01:16

bug描述:

  • 外层viewpager装若干外层fragment,其中的某个外层fragment又装个内层viewpager,内存viewpager又装若干内存fragment。当外层的fragmnet来回切换时,导致内层的fragment数据丢失,报RecyclerView: No adapter attached; skipping layout异常。

解决办法:

  • 创建viewpager适配器的时候,传入getChildFragmentManager()。

原因:

  • getFragmentManager()或者getSupportFragmentManager()) :Return the FragmentManager for interacting with fragments associated with this fragment’s activity,是所在fragment 父容器的碎片管理。

  • getChildFragmentManager():Return a private FragmentManager for placing and managing Fragments inside of this Fragment,是在fragment里面子容器的碎片管理。