Форум программистов, компьютерный форум CyberForum.ru

Как запретить смену ориентации при вызове DialogFragment? - Android

Войти
Регистрация
Восстановить пароль
 
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 406
08.02.2016, 12:44     Как запретить смену ориентации при вызове DialogFragment? #1
В активити вызывается DialogFragment, как запретить смену ориентации экрана пока он активен?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2016, 12:44     Как запретить смену ориентации при вызове DialogFragment?
Посмотрите здесь:

SurfaceView при изменении ориентации экрана перегружается Android
Android Пропажа данных при смене ориентации
Android Обнуляется массив при смене ориентации устройства
Android Бесшовное проигрывание видео при смене ориентации
Как запихнуть в DialogFragment список контролов? Android
Android Перезагрузка списка при смене ориентации приложения
Потеря потока при смене ориентации Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 12:58     Как запретить смену ориентации при вызове DialogFragment? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
disx, setRequestedOrientation.
Перед применением надо запросить текущую ориентацию и зафиксировать её. По окончании можно вернуть разворот по гироскопу назад. Лень искать полный код, поглядите для начала сюда: http://stackoverflow.com/questions/2...799001#2799001.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
08.02.2016, 13:11     Как запретить смену ориентации при вызове DialogFragment? #3
не проще отключить вообще пересоздание активити при поворотах?

хотя даже и без этого диалоги не пересоздаются при повороте
в чем смысл?
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 13:18     Как запретить смену ориентации при вызове DialogFragment? #4
Паблито, не проще. Видимо, плохо читали документацию, где буквально на каждом шагу сказано, что запрет пересоздания активностей - крайний метод, горячо не рекомендуемый создателями Андроида. Может плохо проявить себя в некоторых случаях.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
08.02.2016, 13:32     Как запретить смену ориентации при вызове DialogFragment? #5
есть ссылка на офф документацию где это написано?

чисто логически - пересоздание нужно только если меняется разметка, то есть должен примениться другой лаяут
иначе это пустая трата ресурсов - вызывать onCreate() при каждом повороте


да, и хотелось бы услышать когда это может вылезти боком?

Добавлено через 9 минут
и самостоятельно отвечу на риторические вопросы
Примечание. Самостоятельная обработка изменения конфигурации может значительно затруднить использование альтернативных ресурсов, так как система не применяет их автоматически. Этот подход может применяться в крайнем случае, когда необходимо избежать перезапуска в результате изменения конфигурации, и для большинства приложений его использование не рекомендуется.
подчеркнул основную мысль для тех, кто читает по-диагонали
если у активити тупо одна разметка и при повороте никакие ДРУГИЕ ресурсы не успользуются, например для какие-то текстовые поля меняют название при повороте, то запрет пересоздания только разгрузит систему

иначе, естественно, пересоздание активти лучше всего
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 13:49     Как запретить смену ориентации при вызове DialogFragment? #6
Цитата Сообщение от Паблито Посмотреть сообщение
подчеркнул основную мысль для тех, кто читает по-диагонали
Вот-вот, а теперь подумайте, кто читает по диагонали. Хотел привести ту же ссылку (http://developer.android.com/intl/ru...dlingTheChange) + надо поискать ещё несколько, где об этом сказано в контексте запуска потоков и работы с памятью, но искать лень.
Случаи с текстовыми полями в расчёт брать не будем, т.к. это не общий случай.
Цитата Сообщение от Паблито Посмотреть сообщение
хотелось бы услышать когда это может вылезти боком?
Например, в тех случаях, которые не указаны в android:configChanges, а такие существуют.

Добавлено через 4 минуты
Да, вспомнил случай, который рекомендуется для запрета пересоздания активностей. Это воспроизведение видео. Об этом часто пишу авторы программ как о единственном случае.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
08.02.2016, 13:49     Как запретить смену ориентации при вызове DialogFragment? #7
CoolMind, Паблито, мне кажется что все как-то не так поняли изначальную фразу про запрет пересоздания при перевороте и понеслась... Запрещать можно и нужно в некоторых случаях, НО это не освобождает от обработки пересоздания активити т.к. она пересоздается не только при поворотах, есть еще куча способов ее пересоздать.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 13:51     Как запретить смену ориентации при вызове DialogFragment? #8
Spelcrawler, согласен.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
08.02.2016, 13:53     Как запретить смену ориентации при вызове DialogFragment? #9
вобщем как я и предполагал - пруфов нет, они как бы где-то есть, но их нет

Цитата Сообщение от Spelcrawler Посмотреть сообщение
она пересоздается не только при поворотах, есть еще куча способов ее пересоздать
да это понятно, тут речь идет о том, стоит ли вообще ее пересоздавать если сменилась ориентация экрана
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 14:06     Как запретить смену ориентации при вызове DialogFragment? #10
Цитата Сообщение от Паблито Посмотреть сообщение
вобщем как я и предполагал - пруфов нет, они как бы где-то есть, но их нет
Сам привёл пруф, где написано, что для большинства приложений его использование не рекомендуется, и радуется, как ребёнок.

Добавлено через 2 минуты
И это... я не буду искать что-то ради человека, который проявил себя как хам. Не стану унижаться.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
08.02.2016, 14:08     Как запретить смену ориентации при вызове DialogFragment? #11
в той цитате я выделил главную мысль что бы не возникло затруднений в понимании
они говорят о случае, если есть альтернативные ресурсы

про "выйдет боком" я отписал выше, когда, как и почему выйдет - никто не знает, но страшная история рассказывается на ночь регулярно
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
08.02.2016, 14:32     Как запретить смену ориентации при вызове DialogFragment? #12
Цитата Сообщение от Паблито Посмотреть сообщение
когда, как и почему выйдет - никто не знает
Только выше было указано, что
Цитата Сообщение от Spelcrawler Посмотреть сообщение
она пересоздается не только при поворотах, есть еще куча способов ее пересоздать
и
Цитата Сообщение от CoolMind Посмотреть сообщение
в тех случаях, которые не указаны в android:configChanges
Дальше уже больше похоже на демагогию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2016, 11:03     Как запретить смену ориентации при вызове DialogFragment?
Еще ссылки по теме:

Android Запретить смену ориентации экрана
Обновление списка при выходе из DialogFragment Android
Как передать данные из Fragments в DialogFragment Android
Как запустить service при входящем вызове? Android
Запретить смену ориентации экрана пока идет загрузка Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
disx
18 / 18 / 0
Регистрация: 26.02.2014
Сообщений: 406
09.02.2016, 11:03  [ТС]     Как запретить смену ориентации при вызове DialogFragment? #13
CoolMind, Паблито, Spelcrawler Ооооо-й ребят , не готов поддержать дискуссию из-за отсутствия таких знаний как у Вас ...

но проблему c запретами решил пока так (не знаю на сколько правильно, но работает красиво):

в активити:
Java
1
2
3
4
5
6
7
int orient = getResources().getConfiguration().orientation;
 
                  if (orient==2) {
                      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                      dialog.show(getFragmentManager(), "dialog");
                    
                  }else dialog.show(getFragmentManager(), "dialog");
фрагмент:
Java
1
2
3
4
5
6
7
8
9
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
.....
@Override
    public void onPause() {
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        super.onPause();
    }
теперь появилась другая, GPS-координаты через интерфейс транслируются из активити в этот диалог, и если вызывать его из положения лежа(landscape), то активити как видно из кода становится portrait, появляется диалог, но координаты теперь не отображаются/не изменяются в диалоге, почему так может быть???

Добавлено через 18 часов 57 минут
Паблито, CoolMind, короче в манифесте->активити написал
XML
1
android:configChanges="orientation|screenSize"
а во фрагменте так:
Java
1
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
все вроде работает и отображается.
Yandex
Объявления
09.02.2016, 11:03     Как запретить смену ориентации при вызове DialogFragment?
Ответ Создать тему
Опции темы

Текущее время: 05:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru