【问题标题】:Fragments inside ViewPager are not destroyedViewPager 中的 Fragment 不会被销毁
【发布时间】:2014-10-24 18:15:26
【问题描述】:

在我的 MainActivity onCreate 方法中,我将 MainFragment 添加到 FrameLayout main_view_container:

        if (savedInstanceState == null) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.main_view_container, new MainFragment(), MainFragment.FRAGMENT_TAG);
        fragmentTransaction.commit();
    }

在我的 MainFragment 中,我有 ViewPager 和 FragmentStatePagerAdapter,每个页面都是 Fragment 本身(PagerFragment)。

然后在单击按钮后的某个时刻,我想用另一个片段 (ReplacementFragment) 替换整个 MainFragment,并将事务添加到后台堆栈,以便在按下后退按钮时返回 MainFragment。所以我做了以下事情:

FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_view_container, new ReplacementFragment(), null);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

在我提交事务后 MainFragment 停止并调用 onDestroyView() 但 PagerFragments 完全没有任何反应(在 MainFragment 的 ViewPager 中)没有事件单个 onStop() 调用。然后当我返回时,MainFragment 的视图在 onCreateView() 中重新创建,这也意味着 ViewPager 的新实例,但 PagerFragments 仍然没有。

这怎么可能在父 Fragment 中调用 onDestroyView 而在子 Fragment 中却没有?

【问题讨论】:

  • 在 MainFragment 中创建寻呼机适配器时是否使用了 getChildFragmentManager()?
  • 你为什么不打开一个新的活动而不是尝试用另一个替换你的整个 MainFragment?
  • @cYrixmorten 不,我没有,我使用了 Activity 的 FragmentManager,我想这就是为什么不管理子片段的原因。这解决了我的问题,谢谢!
  • @Karakuri 我可以但想知道答案以用于教育目的。
  • @Karakuri 如果使用导航抽屉,那么这就是要走的路

标签: android android-fragments android-viewpager


【解决方案1】:

在 MainFragment 中创建寻呼机适配器时必须使用 getChildFragmentManager()。

【讨论】:

  • 真的解决了吗?我在 MainFragment 中使用了 getChildFragmentManager(),但 PagerFragment 永远不会停止。
  • @abdfahim 试试mPagerAdapter = new PagerAdapter(getChildFragmentManager());
  • 天哪。谢谢!我觉得我一直在尝试修复我的片段管理器在过去 2 小时内被寻呼机填满,而只是将片段管理器换成 childFragmentManager 就解决了所有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 2017-05-01
相关资源
最近更新 更多