Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 651
1

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

08.02.2016, 12:44. Просмотров 1078. Ответов 12
Метки нет (Все метки)

В активити вызывается DialogFragment, как запретить смену ориентации экрана пока он активен?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2016, 12:44
Ответы с готовыми решениями:

Запретить смену ориентации экрана
имеется проблема в большом весе приложения и нежелании делать отдельные фоны для активити для...

Запретить смену ориентации экрана пока идет загрузка
У меня есть такой код, где активити создается из двух фрагментов и потом запускает поток в котором...

Как отследить смену ориентации Android-а
Добрый день. Возникла небольшая проблема - нужно отследить смену ориентации телефона, но не в...

Как запретить смену IP в Tor browser при переходе на новую страницу
Как запретить смену IP в Tor browser при переходе на новую страницу?? переходя по ссылке из...

12
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 12:58 2
Лучший ответ Сообщение было отмечено disx как решение

Решение

disx, setRequestedOrientation.
Перед применением надо запросить текущую ориентацию и зафиксировать её. По окончании можно вернуть разворот по гироскопу назад. Лень искать полный код, поглядите для начала сюда: http://stackoverflow.com/quest... 01#2799001.
1
2876 / 2288 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.02.2016, 13:11 3
не проще отключить вообще пересоздание активити при поворотах?

хотя даже и без этого диалоги не пересоздаются при повороте
в чем смысл?
1
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 13:18 4
Паблито, не проще. Видимо, плохо читали документацию, где буквально на каждом шагу сказано, что запрет пересоздания активностей - крайний метод, горячо не рекомендуемый создателями Андроида. Может плохо проявить себя в некоторых случаях.
0
2876 / 2288 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.02.2016, 13:32 5
есть ссылка на офф документацию где это написано?

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


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

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

иначе, естественно, пересоздание активти лучше всего
0
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 13:49 6
Цитата Сообщение от Паблито Посмотреть сообщение
подчеркнул основную мысль для тех, кто читает по-диагонали
Вот-вот, а теперь подумайте, кто читает по диагонали. Хотел привести ту же ссылку (http://developer.android.com/i... gTheChange) + надо поискать ещё несколько, где об этом сказано в контексте запуска потоков и работы с памятью, но искать лень.
Случаи с текстовыми полями в расчёт брать не будем, т.к. это не общий случай.
Цитата Сообщение от Паблито Посмотреть сообщение
хотелось бы услышать когда это может вылезти боком?
Например, в тех случаях, которые не указаны в android:configChanges, а такие существуют.

Добавлено через 4 минуты
Да, вспомнил случай, который рекомендуется для запрета пересоздания активностей. Это воспроизведение видео. Об этом часто пишу авторы программ как о единственном случае.
0
534 / 503 / 114
Регистрация: 12.03.2014
Сообщений: 1,670
08.02.2016, 13:49 7
CoolMind, Паблито, мне кажется что все как-то не так поняли изначальную фразу про запрет пересоздания при перевороте и понеслась... Запрещать можно и нужно в некоторых случаях, НО это не освобождает от обработки пересоздания активити т.к. она пересоздается не только при поворотах, есть еще куча способов ее пересоздать.
0
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 13:51 8
Spelcrawler, согласен.
0
2876 / 2288 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.02.2016, 13:53 9
вобщем как я и предполагал - пруфов нет, они как бы где-то есть, но их нет

Цитата Сообщение от Spelcrawler Посмотреть сообщение
она пересоздается не только при поворотах, есть еще куча способов ее пересоздать
да это понятно, тут речь идет о том, стоит ли вообще ее пересоздавать если сменилась ориентация экрана
0
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 14:06 10
Цитата Сообщение от Паблито Посмотреть сообщение
вобщем как я и предполагал - пруфов нет, они как бы где-то есть, но их нет
Сам привёл пруф, где написано, что для большинства приложений его использование не рекомендуется, и радуется, как ребёнок.

Добавлено через 2 минуты
И это... я не буду искать что-то ради человека, который проявил себя как хам. Не стану унижаться.
0
2876 / 2288 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.02.2016, 14:08 11
в той цитате я выделил главную мысль что бы не возникло затруднений в понимании
они говорят о случае, если есть альтернативные ресурсы

про "выйдет боком" я отписал выше, когда, как и почему выйдет - никто не знает, но страшная история рассказывается на ночь регулярно
0
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
08.02.2016, 14:32 12
Цитата Сообщение от Паблито Посмотреть сообщение
когда, как и почему выйдет - никто не знает
Только выше было указано, что
Цитата Сообщение от Spelcrawler Посмотреть сообщение
она пересоздается не только при поворотах, есть еще куча способов ее пересоздать
и
Цитата Сообщение от CoolMind Посмотреть сообщение
в тех случаях, которые не указаны в android:configChanges
Дальше уже больше похоже на демагогию.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 651
09.02.2016, 11:03  [ТС] 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);
все вроде работает и отображается.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2016, 11:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запретить смену буквы диска
Добрый день. Необходимо запретить пользователю менять букву диска. Пробовал блокировать...

Запретить смену прав на index.php
Приветствую всех! Возникла следующая проблема: Не так давно у меня на сайт попал вирус, который...

Запретить смену обоев определенной группе пользователей домена
Доброго времени суток, уважаемые участники форума. Имеется сервер контроллера домена, под...

Запретить смену фонового изображения на рабочем столе другим пользователям
как администратору в win xp запретить смену фонового изображения на рабочем столе другим...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.