Android 按Back键弹出片段显示重叠片段
我创建了一个示例应用程序来测试这个重叠问题 我有一个片段类型Fragment1,我创建了Fragment1的一个新实例,并在运行时将其添加到活动中的FrameLayout中。我通过几个按钮添加片段 注意:我为Fragment1的每个新实例指定了一个不同的数字(#1、#2、#3等)以显示在UI上,以帮助我确定正在查看的片段 所以。。以下是我的工作:Android 按Back键弹出片段显示重叠片段,android,android-3.0-honeycomb,android-fragments,fragment,Android,Android 3.0 Honeycomb,Android Fragments,Fragment,我创建了一个示例应用程序来测试这个重叠问题 我有一个片段类型Fragment1,我创建了Fragment1的一个新实例,并在运行时将其添加到活动中的FrameLayout中。我通过几个按钮添加片段 注意:我为Fragment1的每个新实例指定了一个不同的数字(#1、#2、#3等)以显示在UI上,以帮助我确定正在查看的片段 所以。。以下是我的工作: 单击按钮3,创建Fragment1的新实例并将其添加到Frame1 单击按钮4,创建Fragment1的新实例,并将其添加到Frame1,然后将其添加
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();
}
如果您一个接一个地执行两个
add
调用(两个commit
调用),那么是的,片段将显示为重叠,一个在另一个之上
所以(举个新的例子)如果在同一帧中用frag2替换frag1,然后用frag4替换frag3,并且没有backbackback事务,那么我希望frag2和frag4被覆盖
此外,您的
replace
链接中还有一个潜在问题。您应该为每个调用一个单独的commit
。请参阅。只需覆盖onBackPress()
或onKeyUp
并删除顶部片段。正如我所见,每个提交没有两个add调用。除此之外,我还面临着同样的重叠行为。