提前致谢!
答案 0 :(得分:0)
如果您使用.addToBackStack("")
而不是删除此内容。并且每次用户.replace();
方法为您的所有片段调用片段。
答案 1 :(得分:0)
我发现发生了什么事。它适用于两个不同的片段管理器(FragmentManager
和SupportFragmentManager
)。
根据要删除或替换的片段类型(支持或正常),您必须使用一个或另一个片段管理器。
我已经创建了一个枚举来知道哪种片段是活动的(为了删除)以及将要启动什么样的片段(为了替换)。
或多或少我做了这样的功能:
private void manageFragment (FragmentEnum nextFragment) {
switch (activedFragment) {
case SUPPORT:
getSupportFragmentManager().beginTransaction().remove(fragmentSupport).commit();
break;
case NORMAL:
getFragmentManager().beginTransaction().remove(fragmentNormal).commit();
break;
}
activedFragment = nextFragment;
switch (nextFragment) {
case SUPPORT:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentSupport).commit();
break;
case NORMAL:
getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentNormal).commit();
break;
}
}