Я добавляю кучу FragmentTransactions в задний стек на одной вкладке и хочу очистить их ВСЕ из заднего стека, когда пользователь выбирает другую вкладку. Я не могу найти способ очистить задний стек, только методы их извлечения, и они даже не возвращают вам фрагмент, чтобы вы могли их закрыть. Любые идеи?
Android: удалить ВСЕ FragmentTransactions из заднего стека
Ответы (2)
Если вы добавили много фрагментов в стопку и хотите удалить их все, вы можете сделать это: popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
person
jdamcd
schedule
01.02.2012
К вашему сведению: функция popBackStack находится в FragmentManager или SupportFragmentManager.
- person Tobrun; 22.05.2013
Мой экран расширяет фрагмент, и я не могу найти метод popBackStack() .. что я могу сделать ??
- person Hitarth; 04.09.2013
@Coder getFragmentManager.popBackStack() или getSupportFragmentManager.popBackStack() при использовании совместимых библиотек.
- person dermatthias; 19.09.2013
Этот ответ работает. Но документ говорит: _ Если значение null, всплывает только верхнее состояние_. Так что такое поведение кажется ошибкой. Кто-нибудь может мне объяснить?
- person tjlian616; 17.12.2013
В моем случае я добавил слишком много фрагментов в backstack. Теперь производительность очень низкая. Я попытался использовать описанный выше метод. Но он не работает.
- person user; 24.01.2014
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
работал на меня.
- person Kahn Kah; 25.06.2016
@ 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