Ошибки во фрагментах, объявленных в макетах xml (ACL v4)

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

У меня есть одно действие и 2 фрагмента. Фрагмент A объявляется внутри XML-макета действия, а фрагмент B добавляется (только если он отсутствует) в макете действия в методе onCreate() действия. Я добавил регистрацию всех основных методов жизненного цикла для активности и двух фрагментов и протестировал поведение при переключении ориентации назад и вперед. Вот мои выводы:

Фрагмент B (динамически добавленный фрагмент) ведет себя так, как ожидалось:

а) после смены ориентации в связке savedInstanceState содержится то, что ранее было сохранено в onSaveInstanceState()

б) если setRetainInstance(true), то при смене ориентации не вызывается onDestroy(), а также не вызывается последующий onCreate(). Поля фрагмента сохраняются при смене ориентации

Фрагмент A (фрагмент, определенный в макете xml) ведет себя не так, как ожидалось:

а) после изменения ориентации пакет saveInstanceState всегда равен нулю, хотя onSaveInstanceState() был правильно вызван

б) если setRetainInstance(true), во время изменения ориентации, onDestroy() не вызывается, как ожидалось, НО, вопреки ожидаемому, onCreate() также вызывается при повторном присоединении фрагмента. А также поля фрагмента не сохраняются.

Подводя итог, для фрагментов, объявленных внутри макетов xml и использующих ACL v4, сохранение состояния при изменении ориентации не работает, а setRetainInstance(true) не работает.

У меня вопрос, тестировал ли кто-нибудь эту функциональность на Android 3.0+ и может сказать, правильно ли работают фрагменты при использовании фрагментов из Android SDK.

Одним из способов решения этой проблемы было бы постоянное динамическое создание фрагментов. Кто-нибудь нашел другой обходной путь?


person Catalin Morosan    schedule 21.09.2011    source источник
comment
Вы нашли решение этой проблемы? У меня очень похожая проблема.   -  person blindstuff    schedule 07.12.2011
comment
Последние версии ACL исправили большинство проблем.   -  person Catalin Morosan    schedule 07.12.2011


Ответы (1)


Ревизия 4 ACL устранила эти проблемы.

person Catalin Morosan    schedule 13.12.2011
comment
Я использую android.support.v4.app.Fragment, и ошибка с фрагментами, определенными XML, все еще существует :( - person caligari; 20.12.2013