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