我有3个片段:A,B,C。
如果我去A - > B然后按回来。片段B刚刚消失,你看到片段A与交易前完全一样。
如果我去A - > C并按回(以完全相同的方式) - 片段A被重新创建! (调用onAttachFragment,onCreate,onCreateView等)。 No" onDetach永远打电话给#34;。
我无法找出区别的原因和原因。
我用" .add"只有(没有替换,没有删除)。
getSupportFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.slide_enter_left, R.anim.slide_exit_left, R.anim.slide_enter_right, R.anim.slide_exit_right)
.add(R.id.fragment_holder, newFrag)
.addToBackStack(backName).commit();
如何防止重建片段A?它应该在B之下,当B退出时再次出现? 有什么想法吗?
答案 0 :(得分:0)
在片段事务的addToBackStack(null)方法中使用null
getSupportFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.slide_enter_left, R.anim.slide_exit_left, R.anim.slide_enter_right, R.anim.slide_exit_right)
.add(R.id.fragment_holder, newFrag)
.addToBackStack(null).commit();
答案 1 :(得分:0)
好的,我找到了解决方案。
它完全与片段无关。
为了某人的缘故在这里发布同样的问题。
我在活动的onCreateOptionsMenu中创建片段A.
每次appbar菜单发生变化时都会调用。
片段C未通过菜单处理,因此在进入/退出此片段时未调用onCreateOptionsMenu,但片段B在appbar上添加了按钮,因此称为activity的onCreateOptionsMenu并且重新编写了A片段。