在后堆栈中具有A-> B-> c,A在顶部。 当时它希望C在顶部,并保持A,B在堆栈中的顺序。在要求中,它不能在堆栈中有两个C实例。问题是如果弹出C然后删除所有A,B。
它想要的是现在有C-> A-> B。
是否可以使用FragmentManager的api实现此目的?
答案 0 :(得分:1)
FragmentManager
不支持更改后台堆叠的顺序或删除不在堆栈顶部的项目。
您可能需要考虑管理自己版本的Fragment Backstack。
答案 1 :(得分:1)
将以下代码放在您的活动
中FragmentManager fragmentManager
//add fragment A
fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager .beginTransaction();
ft.add(resId, fragmentA);
ft.addToBackstack("tag");
ft.commit();
//add fragmentB
fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager .beginTransaction();
ft.replace(resId, fragmentB);
ft.addToBackstack("tag1");
ft.commit();
//add fragmentC
fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager .beginTransaction();
ft.replace(resId, fragmentC);
ft.addToBackstack("tag2");
ft.commit();
//then try to take back click of B and C fragment here through interface
//backclick of C
public void backClick()
{
fragmentManager.popBackStack("tag1",0);
}
//back click of B
public void backClick1()
{
fragmentManager.popBackStack("tag",0);
}
答案 2 :(得分:0)
保持片段隐藏,如果你想要显示它。