yaAmpa
@yaAmpa

Как правильно закрыть все последовательно открытые друг за другом фрагменты?

Имеется несколько фрагментов.
Каждый при открытии помещается в стек. Для отображения каждого фрагмента используется следующий код:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
        transaction.replace(containerId, fragment);
        transaction.addToBackStack(null);
        transaction.commitAllowingStateLoss();

Фрагмент i открывает новый фрагмент i + 1 , который открывает следующий фрагмент i + 2 и так далее. В определенный момент времени последний открытый фрагмент получает сообщение о том что он и все предыдущие фрагменты вплоть до i-го должны быть закрыты. Как можно удобно организовать хранения списка всех фрагментов, которые должны быть закрыты? Или можно ли как то передавать информацию в предыдущий фрагмент о том что он должен быть закрыт?
  • Вопрос задан
  • 2754 просмотра
Пригласить эксперта
Ответы на вопрос 1
LeEnot
@LeEnot
Енот-андроид
Вы неправильно добавляете фрагменты в стек. Метод transaction.addToBackStack(null), в который вы передаете null должен принимать строку-идентификатор, по которой вы однозначно можете идентифицировать данный фрагмент в стеке. Вернуться в любому помеченному так фрагменту можно так:
FragmentManager.popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)

где name как раз та самая строка-идентификатор.
Вызвав
FragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
можно очистить весь стек фрагментов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы