Android: удалить ВСЕ FragmentTransactions из заднего стека

Я добавляю кучу FragmentTransactions в задний стек на одной вкладке и хочу очистить их ВСЕ из заднего стека, когда пользователь выбирает другую вкладку. Я не могу найти способ очистить задний стек, только методы их извлечения, и они даже не возвращают вам фрагмент, чтобы вы могли их закрыть. Любые идеи?


person Christopher Perry    schedule 07.04.2011    source источник


Ответы (2)


Если вы добавили много фрагментов в стопку и хотите удалить их все, вы можете сделать это: popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)

person jdamcd    schedule 01.02.2012
comment
К вашему сведению: функция popBackStack находится в FragmentManager или SupportFragmentManager. - person Tobrun; 22.05.2013
comment
Мой экран расширяет фрагмент, и я не могу найти метод popBackStack() .. что я могу сделать ?? - person Hitarth; 04.09.2013
comment
@Coder getFragmentManager.popBackStack() или getSupportFragmentManager.popBackStack() при использовании совместимых библиотек. - person dermatthias; 19.09.2013
comment
Этот ответ работает. Но документ говорит: _ Если значение null, всплывает только верхнее состояние_. Так что такое поведение кажется ошибкой. Кто-нибудь может мне объяснить? - person tjlian616; 17.12.2013
comment
В моем случае я добавил слишком много фрагментов в backstack. Теперь производительность очень низкая. Я попытался использовать описанный выше метод. Но он не работает. - person user; 24.01.2014
comment
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); работал на меня. - person Kahn Kah; 25.06.2016
comment
@ tjlian616 это из-за FragmentManager.POP_BACK_STACK_INCLUSIVE. В документах говорится: флаг для popBackStack(String, int) и popBackStack(int, int): если он установлен и указано имя или идентификатор записи обратного стека, то все совпадающие записи будут использоваться до тех пор, пока не будет найдена одна, которая не соответствует найден или достигнут конец стека. В противном случае все записи до этой записи, но не включая ее, будут удалены. Я видел другую часть только в документах класса, но не в developer.android.com/reference/android/app/ - person David; 24.08.2016

Просто удалите их из бэкстека, используя методы popBackStack().

Каждый извлекаемый фрагмент точно такой же, как если бы пользователь нажал кнопку BACK, и вы не выполняете никакой специальной очистки при нажатии кнопки BACK, верно?

person mgv    schedule 07.04.2011