У меня есть 3 фрагмента, добавленных в сцену в одном и том же контейнере. Два фрагмента добавлен с addToBackStack
способом:Удаление фрагмента из того же контейнера
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
И заключительный один добавляется без задней стеки:
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.commit();
Все три уживается прекрасно, потому что, как я понимаю, если фрагмент добавляется с помощью backstack, то он не уничтожается при добавлении другого фрагмента. Последний добавлен без задней части, что означает, что, как только я позвоню replace
, его следует уничтожить.
Однако этого не происходит, и когда я называю
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, myNewFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
я все еще могу видеть, что есть 4 фрагмента общей сложности в моем R.id.container
, который не то, что я ожидал.
Как я могу удалить свой третий фрагмент, когда я вызываю метод replace
при добавлении 4-го фрагмента?
Почему 'replace' фактически не заменяет фрагмент? Например, как только я добавлю свой первый фрагмент, почему второй вызов 'replace' не удаляет его из списка? –
Фактически он удаляется из представления, но он будет внутри диспетчера фрагментов. Чтобы мы могли использовать один и тот же экземпляр. – Krish