Задать вопрос

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

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

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

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

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

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