Android 机器人碎片相互重叠
我已经处理碎片有一段时间了,但我经常遇到一个让我恼火的问题。碎片有时会相互缠绕在一起。现在,我成功地为此分离出一个用例,如下所示:Android 机器人碎片相互重叠,android,android-fragments,Android,Android Fragments,我已经处理碎片有一段时间了,但我经常遇到一个让我恼火的问题。碎片有时会相互缠绕在一起。现在,我成功地为此分离出一个用例,如下所示: 片段A(也与名称一起使用“backstack\u state”) 片段A与片段B(使用addToBackStack) 将片段B替换为片段C,而不使用addToBackStack 在给定点使用popBackStack(“backstack\u state”,0),问题来了: 反叠被弹出,直到片段A但是片段C被片段A覆盖,两者同时可见。这是正常的行为还是我犯了错误 这里
片段A
(也与名称一起使用“backstack\u state”
)
片段A
与片段B
(使用addToBackStack
)
将片段B
替换为片段C
,而不使用addToBackStack
在给定点使用popBackStack(“backstack\u state”,0)
,问题来了:
反叠被弹出,直到片段A
但是片段C
被片段A
覆盖,两者同时可见。这是正常的行为还是我犯了错误
这里还有一句话:所有的碎片都有透明的背景
谢谢 发生这种情况是因为顶部片段(在本例中为片段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);
至少可以说,
片段
后堆栈的工作很混乱。此外,后堆栈上的片段
和其他东西仍然会消耗内存,这使得将片段
添加到后堆栈中从性能角度看不是很好。我的建议是:不要将片段添加到后台堆栈中(在大多数情况下,这是糟糕的设计)。使用活动
构建导航树。