在我的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/