ViewPager中的碎片不会被销毁

Mic*_*iuk 7 android android-fragments android-viewpager

在onCreate方法的MainActivity中,我将()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();
    }
Run Code Online (Sandbox Code Playgroud)

在我的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();
Run Code Online (Sandbox Code Playgroud)

在我提交事务之后,MainFragment被停止并且onDestroyView()被调用但是PagerFragments(在MainFragment中的ViewPager中)完全没有任何反应.不是单个onStop()调用的事件.然后当我回去时MainFragment的View在onCreateView()中重新创建,这意味着ViewPager的新实例,但是仍然没有与PagerFragments一起.

如何调用父片段onDestroyView而不是子片段?

cYr*_*ten 24

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