Я хочу реализовать динамический стек фрагментов.Более конкретно, например, предположим следующий стек:
A -> B -> C -> D
Возможно, что B будет добавлен снова после D. Если это произойдет, я хочу удалитьB так, что результат будет:
A -> C -> D -> B
Я пытался сделать это так:
void loadFragment(MyFragment f){
FragmentManager fm = getSupportFragmentManager();
MyFragment foundFragment = (MyFragment ) fm.findFragmentByTag(f.getClass().getName());
if(foundFragment!=null) {
fm.popBackStack(f.getTransactionId(), 0);
}
String tag = f.getClass().getName();
f.setTransactionId(tag);
fm.beginTransaction()
.addToBackStack(tag)
.replace(R.id.fragment_container, f, tag)
.commit();
}
, поэтому я делаю:
loadFragment(A);
loadFragment(B);
loadFragment(A);
loadFragment(B);
Затем я нанёс ответный удар, который привел меня к А (пока все в порядке)Затем я нанёс ответный удар снова, и он снова привел меня к А. (Куда ушел второй Б ???)Если я нанесу ответный удар снова, действие закроется, потому что больше нет фрагментов для всплытия.
Я не могу объяснить это ...
Как мне добиться желаемого поведения?