Android app. Fragment как самодостаточный модуль/контрол?

Пишу приложение для запоминания английских слов (в основном интересно разобраться с самой платформой android), столкнулся с проблемой или недопониманием.
Есть activity "урок", которая знает как получить список слов для показа. Есть несколько фрагментов, которые отвечают непосредственно за сам показ слов (разними способами) и взаимодействие с пользователем.
Хочется сделать каждый фрагмент максимально независимом, т. е. в коде создал фрагмент, добавил на UI, передал список слов. В финале фрагмент возвращает в activity результаты и его заменяет другой.

Проблема
В процессе поворота экрана activity пересоздается, а с ней и текущий фрагмент, в результате все начинается с начала. Сохранять прогресс фрагмента в activity не хочу, рушит инкапсуляцию.
Знаю про setRetainInstance, полностью заставить работать не удалось, плюс на developer.android.com пишут, что это больше для фрагментов где нет UI, а у меня практически только он.

Интересует архитектурно правильное решение проблему. Спасибо.
  • Вопрос задан
  • 3071 просмотр
Решения вопроса 1
@bimeg
У фрагмента есть свой onSaveInstanceState
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Strange
@Strange Автор вопроса
Немного исследовав поведение Fragment с setRetainInstance и без понял, что это не кошки не вкусные..
Окончательно разобраться помог простой эксперимент с выводом в лог событий с фрагмента при повороте
efdb9cec09024594aaf1566248f2f46a.png
Из лога прекрасно видно, что фрагмент не уничтожается (только его UI), в итоге, все данные (список слов, текущая позиция, промежуточные результаты) остаются на своих местах и надо только перерисовать UI основываясь на этих данных.
Считаю этот вариант более удобным чем использование onSaveInstanceState.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы