问题:当我按下按钮时,我看到C几分之一秒,然后显示G.To防止这种情况我试图在answer的帮助下停止动画但是即使片段停止动画,C仍然可见几秒钟。
在替换C顶部的片段时,有没有更好的方法可以设计片段流或解决此片段的方法?
答案 0 :(得分:5)
我对这个问题非常好奇,我创建了一个示例项目并实现了您在问题中提到的相同用例。这是我如何处理这个。
使用此方法从backstack中删除F,E,D片段
private void removeFragments() {
getSupportFragmentManager().popBackStack("F", FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().popBackStack("E", FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().popBackStack("D", FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
使用此方法替换片段
private void replaceNewFragment(String key) {
getSupportFragmentManager().beginTransaction().addToBackStack(key)
.replace(android.R.id.content, AFragment.newInstance(key)).commit();
}
以下是github
上完成的这个项目答案 1 :(得分:1)
更多通用解决方案,像这样替换片段
getSupportFragmentManager().beginTransaction().
replace(R.id.f_container,new FragmentA())
.addToBackStack("A")
.commit();
getSupportFragmentManager().beginTransaction().
replace(R.id.f_container,new FragmentB())
.addToBackStack("B")
.commit();
像p一样聪明地做到片段F并假设你在F上有提交按钮
现在点击提交按钮
使用下面的POP_BACK_STACK_INCLUSIVE标记弹回堆栈直到D,并使用片段G添加替换容器
getActivity().getSupportFragmentManager().popBackStack("D",
FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().beginTransaction().
replace(R.id.f_container,new FragmentG())
.addToBackStack("G")
.commit();
现在当您按下后退按钮时,您将看到片段C
我希望这能帮到你,为我工作