2

У меня есть несколько фрагментов, которые продолжают заменять друг друга (с транзакциями, добавленными в backstack). В зависимости от действий пользователя в какой-то момент мне нужно очистить все (или некоторые) из предыдущих фрагментов и показать только 1 новый фрагмент.андроид показать следующий фрагмент перед появлением backstack

Для этого я в настоящее время делаю popBackStack(), чтобы сначала очистить их, а затем сделать replace(), это работает так, как ожидалось. Однако иногда появляется фрагмент предыдущего фрагмента, прежде чем мы увидим новый фрагмент. Я думаю, что это потому, что я сначала вывожу назад, прежде чем показывать новый фрагмент.

Так что мне просто интересно, есть ли простой способ сначала отобразить новый фрагмент, а затем очистить стопку предыдущих транзакций?

ответ

0

Редактировать: Вы правы, это потому, что вы удаляете из заднего стека перед добавлением фрагмента.

Если вам не нужен новый фрагмент на задней панели, вы можете просто добавить новый фрагмент сначала в одну транзакцию и вынуть остальные фрагменты из заднего стека после транзакции. (или если вам это нужно, удалите все фрагменты из заднего стека, кроме недавно добавленного).

Также, если вы просто вызываете replace (R.id.containter, new Fragment(), TAG), все фрагменты, добавленные в контейнер будет заменен новым. (вы можете также очистить задний стек вручную)

Оба этих решения должны удалить вспышку, которую вы видите иногда, поскольку в вашем случае вы начинаете удалять фрагменты перед добавлением нового, и, таким образом, вы можете видеть старые, удаляющие себя.

Если проблема по-прежнему возникает, вы можете попробовать очистить свой задний стек после того, как новый фрагмент был присоединен к действию и показан сам (но я не думаю, что это будет необходимо, я пробовал вышеупомянутые решения, где я вызываю add сначала фрагмент и поп весь задний стоп сразу после)

+0

Как это сделать, если вы только хотите вырезать предыдущий фрагмент 1 (или 'n') в некоторых случаях? Когда я popBackStack() после добавления нового фрагмента, новый фрагмент никогда не отображается. –

+0

Это займет некоторую работу, но вот решение, которое вам нужно для импинга, чтобы добиться эффекта. http://stackoverflow.com/questions/21665346/android-reorder-fragment-backstack/22125826#22125826 – JanBo

+0

Но прежде чем вы это попробуете, настройте индивидуальную анимацию на транзакции фрагмента? – JanBo

Смежные вопросы