在堆棧中有A-> B-> c,A位於頂部。 當時它希望C在頂部,並保持A,B在堆棧中的順序。在要求中,堆棧中不能有兩個C實例。問題是如果彈出C,那麼所有A,B都被刪除。可以通過編程方式更改堆棧中碎片的順序
現在想要的是C-> A-> B。
是否有可能通過FragmentManager的API實現這一點?
在堆棧中有A-> B-> c,A位於頂部。 當時它希望C在頂部,並保持A,B在堆棧中的順序。在要求中,堆棧中不能有兩個C實例。問題是如果彈出C,那麼所有A,B都被刪除。可以通過編程方式更改堆棧中碎片的順序
現在想要的是C-> A-> B。
是否有可能通過FragmentManager的API實現這一點?
FragmentManager
不支持更改後臺堆棧的排序或刪除不在堆棧頂部的項目。
您可能需要考慮管理您自己的Fragment backstack版本。
yeap,希望能夠從Android獲得支持。 – lannyf
保持片段隱藏,如果你想顯示它。
放下面的代碼你activiy內
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);
}
pop BackStack將破壞該片段。感謝分享! – lannyf
有一種被稱爲堆棧,我不認爲有一個API,但根據你的使用情況的原因,總有辦法得到它的工作! – varunkr
我認爲它已經在這個線程回答https://stackoverflow.com/questions/21665346/android-reorder-fragment-backstack –
也許創建一個新的堆棧與所需的順序,或者可能使用反射來修改實際的? – Nanoc