我现在已经处理过片段了一段时间,但我经常遇到一个让我烦恼的问题。碎片有时会相互遮挡。现在,我设法为此分离了一个用例,它是这样的:
Add Fragment A
(也使用名称为"backstack_state"
的{{3}})
Fragment A
的 addToBackStack Fragment B
(使用addToBackStack
)
使用Fragment B
Fragment C
替换为addToBackStack
没有
在给定点使用popBackStack("backstack_state", 0)
,问题就出现了:
在Fragment A
之前会弹出背斜,但Fragment C
与Fragment A
重叠,两者同时可见。这是正常行为,还是我犯了错误?
这里还有一句话:所有片段都有透明的背景。
谢谢!
答案 0 :(得分:1)
这是因为顶部片段(在这种情况下为片段C)未被删除。您必须先在片段事务中删除它。试试这个:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment topFragment = fragmentManager.findFragmentById(R.id.fragment_container);
if (topFragment != null) {
fragmentTransaction.remove(topFragment);
}
fragmentTransaction.commit();
fragmentManager.popBackStack("backstack_state", 0);