我创建了一个示例应用程序来测试这个重叠问题。
我有一个片段类型 Fragment1,我创建了一个新的 Fragment1 实例,并在运行时将它添加到我的活动中的 FrameLayout。我在几个按钮的帮助下添加了片段。
注意:我为 Fragment1 的每个新实例指定了一个不同的数字(#1、#2、#3 等)以显示在 UI 上,以帮助我确定正在查看的片段。
所以..这就是我所做的:
- 单击按钮 3,创建 Fragment1 的新实例并将其添加到 Frame1。
- 单击按钮 4,创建 Fragment1 的新实例并将其添加到 Frame1 并将其添加到片段 backstack。
- 重复 1 和 2。
- 重复 1 和 2。
现在,我按以下顺序排列片段:1(#1)、2(#2)、1(#3)、2(#4)、1(#5)、2(#6)。
查看片段 #6 时按返回键。
- 返回键按下,UI 显示 (#5)。
- 返回键按下,UI 显示(#3 AND #5),
- 按下返回键,UI 显示(#1、#3、AND #5)
似乎片段显示在彼此的顶部。
为什么?是否存在重叠问题?我怎样才能清除这个重叠的问题。我认为这将是兼容性库的一个问题......但它也在 3.0.0 上。
添加片段的代码:
public int doFragmentChange(int cont1, Fragment frag1, String tag1, int cont2, Fragment frag2, String tag2,
boolean addToStack, String stackTag) {
FragmentManager fm = getFragmentManager();// getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (frag1 != null) {
ft.replace(cont1, frag1, tag1);
}
if (frag2 != null) {
ft.replace(cont2, frag2, tag2);
}
// add fragment to stack
if (addToStack)
ft.addToBackStack(stackTag);
return ft.commit();
}