可以通过编程方式更改backstack中片段的顺序

时间:2016-05-11 14:39:47

标签: android fragment-backstack

在后堆栈中具有A-> B-> c,A在顶部。 当时它希望C在顶部,并保持A,B在堆栈中的顺序。在要求中,它不能在堆栈中有两个C实例。问题是如果弹出C然后删除所有A,B。

它想要的是现在有C-> A-> B。

是否可以使用FragmentManager的api实现此目的?

3 个答案:

答案 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)

保持片段隐藏,如果你想要显示它。