Tag: fragment backstack

这是正确的方式来清理碎片回堆叠时,留下一个深度嵌套?

我正在使用Android兼容性库来实现片段,并扩展了布局示例,以便片段包含一个可以closures另一个片段的button。 在左侧的select窗格中,我有5个可选项目 – ABCDE 。 每个在细节窗格中加载一个片段(通过FragmentTransaction:replace ) – abcde 现在我已经扩展了片段e以包含一个button,在另一个片段e1也加载了一个button。 我已经完成了片段e的onClick方法,如下所示: FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); ft.replace(R.id.details_frag, newFrag); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); ft.commit(); 如果我做出以下select: E – e – e1 – D – E 然后片段e在详细信息窗格中。 这很好,我想要的。 但是,如果我点击backbutton,它什么都不做。 我必须点击两次,因为e1仍然在堆栈中。 此外,点击后,我在onCreateView中得到一个空指针exception: 为了“解决”这个问题,我selectABCDE时添加了以下内容: FragmentManager fm = getActivity().getSupportFragmentManager(); for(int i = 0; i < fm.getBackStackEntryCount(); ++i) { fm.popBackStack(); } 只是想知道这是否是正确的解决scheme,或者我应该做一些不同的事情?