Получить все фрагменты из backstack по порядку

Я использую Фрагменты в своем проекте приложения. Все фрагменты добавляются в back stack:

...
fragmentTransaction.addToBackStack(null);
...

Позже, как правильно получить все фрагменты из back stack по порядку?


person Leem.fin    schedule 19.03.2012    source источник


Ответы (1)


Используя getBackStackEntryCount(), вы можете перебирать задний стек и использовать метод getBackStackEntryAt() для получения каждого фрагмента.

РЕДАКТИРОВАТЬ: На основании некоторых обсуждений в комментариях рекомендуется вручную сохранить список фрагментов, которые вы добавили в свой задний стек, и сохранить их в своих общих настройках. Затем вы можете прочитать этот список при запуске приложения и перезагрузить эти фрагменты.

person Mimminito    schedule 19.03.2012
comment
Но я получил BackStackEntry при вызове getBackStackEntryAt(), как я могу получить фрагмент? Мне нужны фрагменты в заднем стеке. - person Leem.fin; 19.03.2012
comment
Извините, похоже, вы не можете использовать эти методы. Вам нужно будет вручную сохранить ссылку, хотя в документации для BackStackEntry указано, что вы не должны хранить эти ссылки. developer.android.com/reference/android/app/ - person Mimminito; 19.03.2012
comment
Могу я спросить, чего вы пытаетесь достичь? Может быть лучшее решение - person Mimminito; 19.03.2012
comment
Мое приложение будет убито, если ответ сервера будет неправильным. Если пользователь снова запустит приложение, мое приложение должно отображать ранее отображаемый фрагмент, поэтому моему приложению необходимо сохранить информацию о стеке фрагментов локально, мне нужно получить фрагменты из обратного стека по порядку. - person Leem.fin; 19.03.2012
comment
Вам следует вручную сохранить список всех открытых фрагментов. Если вы знаете, когда приложение будет уничтожено, вы сможете сохранить список в SharedPreferences, а затем получить их, когда приложение снова запустится. Каждый раз, когда вы добавляете или удаляете что-то в задний стек, убедитесь, что вы добавили ссылку в свой список. Чтобы сделать это проще, создайте класс Constants, который присваивает каждому фрагменту идентификатор (типа int), и тогда вы сможете перекрестно ссылаться на то, какой фрагмент вы загрузили. - person Mimminito; 19.03.2012
comment
Хорошо, поскольку у каждого моего фрагмента есть тег, я планирую использовать List для хранения тега фрагмента каждый раз, когда фрагмент помещается в стек. Затем сохраните список в SharePreferences. Не могли бы вы дать ответ, и я могу его принять _ - person Leem.fin; 19.03.2012