|
50 / 50 / 4
Регистрация: 12.03.2013
Сообщений: 171
|
|
Поворот экрана и пересоздание обьектов. Как делают матёрые разработчики?08.10.2016, 21:05. Показов 2542. Ответов 6
Метки нет (Все метки)
Разрабатываю приложение, решил делать одно активити и FrameLayout в нем, куда будут помещаться фрагменты (настройки, диалоги и т.д.). Все конечно хорошо, но когда дело доходит до поворота экрана, начинается сущий ад. Создается несколько фрагментов и я их сохраняю в фрагмент менеджер и после поворота экрана восстанавливаю. Но когда начинаю поворачивать экран и переходить между фрагментами по Back Stack в разных вариациях, приложение падает с исключением. Пробовал и так и сяк делать сохранение и восстановление, но исключение неумолимо.
Как вообще реализовывают в сложных программах пересоздание фрагментов? Ибо при моем подходе, делать обработку для каждого фрагмента, можно рехнуться. Решил попробовать отключить пересоздание в манифесте через android:configChanges="keyboardHidden|or ientation|screenSize", стало сразу на много проще, но везде пишут, что этот метод не рекомендован и что нужно обновлять в ручную какие то данные. Разжуйте стоит ли этот метод использовать или нет? Ну и хотелось бы услышать опытных разработчиков, как бороться с пересозданием с минимальными затратами.
0
|
|
| 08.10.2016, 21:05 | |
|
Ответы с готовыми решениями:
6
Запретить пересоздание Activity при повороте экрана Захват содержимого экрана. Как они это делают? Как отследить поворот экрана |
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 09.10.2016, 09:07 | |
|
Hellrider_, постарайтесь разрабатывать так как будто активити может в любой момент погибнуть и возродится. Да, можно рехнуться
1
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
||
| 09.10.2016, 11:19 | ||
Сообщение было отмечено Hellrider_ как решение
Решениена самом деле если для обеих ориентаций используется одна и та же разметка - такой подход самое то если разметки разные - иначе никак, только пересоздание нужно просто понять что в onCreateView только инициализация дочерних вьюшек фрагмента, а остальная логика на усмотрение - onResume, onAttach и так далее, то задачи
1
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
||
| 11.10.2016, 10:55 | ||
|
Когда хотя бы минимально работает, обычно в активности выставляю портретную ориентацию. Либо при запуске активности определяю текущую ориентацию и фиксирую её. Также, насколько помню, при повороте фрагменты не пересоздаются (или это надо сделать через setRetainInstance), можно присоединить к пересозданной активности через поиск фрагмента. Короче, голову надо отрубить тому создателю Андроида, который решил, что надо "пойти другим путём" и пересоздавать разметку вместе с контролами.
0
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 12.10.2016, 12:48 | |
|
Вот, кстати, ещё одна тема: http://stackoverflow.com/quest... ice-rotate. Пишут, что можно проверять в активности savedInstanceState == null, и если да, то создавать фрагменты.
0
|
|
|
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
|
||
| 12.10.2016, 14:53 | ||
|
Если это экран, пусть будет отдельным активити, фрагменты считаю, нужно использовать, только при делении активити на блоки разного функционала, которые одинаковы для разных частей приложения.
0
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 12.10.2016, 19:18 | |
|
xaat, решил встрять в диалог, если позволите.
Я часто использую фрагменты, особенно, если нужен Navigation Drawer (ибн "боковое меню"). Читал статейку на "Хабре", где одна контора решила от них отказаться, потому как соотношение жизненных циклов и правда очень разветвлённое, а количество проблем пропорционально 2^n (n - кол-во фрагментов). Активно используйте DialogFragment на замену AlertDialog и прочих Dialog.
0
|
|
| 12.10.2016, 19:18 | |
|
Помогаю со студенческими работами здесь
7
Поворот отдельной страницы в приложении, когда все остальные этого не делают Почему не делают частоту обновления экрана больше 60Гц? Поворот Экрана
Поворот экрана - Андроид Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|