У меня есть фрагменты, которые будут заменены следующим методом. Я думаю, что что-то не так с моим кодом, потому что я хочу предотвратить добавление нескольких фрагментов в задний стек. Если я дважды нажму на фрагмент B, все экземпляры будут добавлены в задний стек, и кнопка возврата будет передана через два созданных экземпляра.Фрагменты Android - удалить фрагмент из предыдущего стека, если он уже существует
public void replaceFragment(Fragment fragment, boolean addToBackStack, boolean customAnimation) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
String tag = fragment.getClass().getSimpleName();
if (customAnimation) {
transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_bottom, R.anim.slide_in_bottom, R.anim.slide_out_bottom);
}
transaction.replace(R.id.fragment_container, fragment, tag);
// remove from back stack if exists
// always return false!
boolean f = manager.popBackStackImmediate(tag, 0);
if (addToBackStack) {
transaction.addToBackStack(tag);
}
transaction.commit();
}
Это то, что мне действительно нужно. Спасибо, Дэниэл. У меня есть вопрос. Почему вы передали «null» в качестве имени стека? Если я передам тег фрагмента, что произойдет? – Alireza