【问题标题】:FragmentStatePagerAdapter does not retain its state when back to parent fragmentFragmentStatePagerAdapter 在返回父片段时不保留其状态
【发布时间】:2018-04-13 03:40:54
【问题描述】:

我正在制作一个架构如下的视图:

片段的视图寻呼机具有 FragmentStatePagerAdapter(适配器 1),FragmentStatePagerAdapter(适配器 1)在单击 Fragment 时会返回 Fragment,它会打开另一个 Fragment,该 Fragment 再次具有 ViewPagerFragmentStatePagerAdapter(adapter 2) 附加到它,再次返回 Fragment

我的问题是,当我单击 Fragment 并按返回按钮返回时,Fragment 为空白,当我在适配器 1 上使用 getChildFragmentManager 时,应用程序崩溃,找不到 @987654332 的视图@。

编辑: 通过调试,我发现FragmentStatePagerAdapter 不会返回之前返回的片段,这就是我得到空白页的原因

在片段中:

viewPagerDetail.setAdapter(new ProductDetailViewPagerAdapter(getFragmentManager()));
tabLayoutDetail.setupWithViewPager(viewPagerDetail);

(如果我在这里使用 getChiildFragmentManager 会导致应用程序崩溃)

ProductDetailViewPagerAdapter 内部:

@Override
public Fragment getItem(int position) {
    return new ViewPagerImageFragment();
}

在 ViewPagerImageFragment 内部:有一个 imageview 当我单击图像视图时,它会打开一个片段,该片段具有带有适配器的 viewpager,当我按回具有 ProductDetailViewPagerAdapter 的片段时,它也会返回一个片段空白

【问题讨论】:

  • 你需要为后面堆叠的Fragment实现onResume函数,这样当Fragment恢复时,它会恢复到之前的状态。
  • 你能回答吗
  • 那么我需要检查从您的父级Fragment 启动的Fragment 以及您在哪里使用导致崩溃的childFragmentManager
  • childFragmentManager 在第一个适配器,见编辑
  • 请分享上述代码段。

标签: android android-fragments android-viewpager fragmentmanager


【解决方案1】:

对于像这种嵌套的片段,我们应该看到片段的层次结构,我们希望看到平行或领先或低于领先或低于在替换时选择getFragment管理器和

  getParentFragment().getFragmentManager()  

用于并行片段替换

编码愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多