Android: разница между ft.remove() и popBackStack()

Я пытаюсь удалить фрагмент из моего стека. Я использую этот код:

FragmentManager fm = getSupportFragmentManager();
    if (fm != null) {
        FragmentTransaction ft = fm.beginTransaction();
        Fragment currentFragment = fm.findFragmentById(R.id.my_id);
        if (currentFragment != null) {
            ft.remove(currentFragment);
            ft.commit();
        }
    }

Нужно ли вызывать popBackStack() с указанным выше кодом?

fm.popBackStack();

1 ответ

remove() просто удалит фрагмент.

popBackStack() удалит текущий фрагмент и заменит его последним из стека. Чтобы это работало, нужно сделать addToBackstack() на последнем фрагменте транзакции. Но это не то, что вы хотите сделать, поэтому не делайте этого.

Другие вопросы по тегам