在我的onActivity的onCreate方法中,我向FrameLayout main_view_container添加()MainFragment:

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

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

然后在单击按钮后的某个时刻,我想将整个MainFragment替换为另一个Fragment(ReplacementFragment),并将事务添加到后堆栈,以便可以在按下后退按钮时返回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中)完全没有任何 react 。然后,当我返回时,在onCreateView()中重新创建MainFragment的View,这也意味着ViewPager的新实例,但PagerFragments仍然没有。

在父 fragment 中调用onDestroyView而不在子 fragment 中调用的可能性如何?

最佳答案

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

关于android - ViewPager中的 fragment 不会被破坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26553865/

10-12 04:34