Android: фрагменты и onConfigurationChanged

#android #configuration #fragment

#Android #конфигурация #фрагмент

Вопрос:

У меня есть действие, которое содержит один фрагмент, по причинам, в которые я сейчас не буду вдаваться, я обрабатываю большинство изменений конфигурации, чтобы действие не воссоздавалось, когда, например, пользователь поворачивает экран. Проблема, с которой я сталкиваюсь, заключается в том, что представления фрагментов не воссоздаются при ротации. Фрагмент использует метод onCreateView для предоставления activity своего представления и добавляется программно через FragmentManager.

Я вызываю метод setContentView в методе onConfigurationChanged activity для перезагрузки представления activities, однако это никогда не заканчивается вызовом метода onCreateView фрагмента для получения нового представления (подходящего для вновь повернутого экрана). Это имеет смысл, потому что фрагмент был добавлен вручную с помощью кода. Итак, я попытался вручную повторно добавить фрагмент в метод onConfigurationChanged действия, но все равно метод onCreateView фрагмента не вызывается. Также я предполагал, что система Android автоматически обрабатывает повторное добавление фрагмента, если вы используете систему транзакций Fragment manager … но я могу ошибаться в этом.

Я предполагаю, что мне не хватает чего-то логического. Если бы кто-нибудь мог пролить некоторый свет, это было бы очень ценно. По сути, мне просто нужно сохранить свою активность и фрагментировать изменения конфигурации, и они нужны для воссоздания их представлений, когда происходят эти изменения.

Спасибо за любую помощь, Гарри

Комментарии:

1. Вы можете подумать о переключении на setRetainInstance(true) in a fragment, чтобы удерживать вещи (включая виджеты), сохраняя при этом возможность уничтожения и воссоздания действия. В частности, поскольку вы уже используете фрагменты, это вполне может быть гораздо более чистым решением.