我正在使用Android兼容性库来实现片段,并扩展了布局示例,以便片段包含触发另一个片段的按钮。
在左侧的选择窗格中,我有5个可选项目- A B C D E
。
每个都FragmentTransaction:replace
在详细信息窗格中加载一个片段(通过)-a b c d e
现在,我扩展了片段e
以包含一个按钮,该按钮e1
也可以在详细信息窗格中加载另一个片段。我已经对fragment 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();
如果我进行以下选择:
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();
}
只是想知道这是正确的解决方案还是我应该做些其他的事情?