2013-03-05 3 views
1

Я пытаюсь заблокировать ориентацию экрана до положения, которое было при вызове приложения, чтобы не сбой при повороте экрана (да, я использовалКак заблокировать поворот экрана до текущего состояния

андроида: configChanges = "ориентация | keyboardHidden"

и она отлично работает на низких версиях Android, но это, кажется, что для более высоких он должен быть

андроид: configChanges =» Orien tation | keyboardHidden | screenSize "

, а параметр screenSize не поддерживается версиями нижнего андроида).

Итак, я попытался это решение (1):

setRequestedOrientation; ( GetResources() getConfiguration() ориентации.).

и этот другой (2):

setRequestedOrientation (getScreenOrientation());

где

public int getScreenOrientation() 
{ 
    Display getOrient = getWindowManager().getDefaultDisplay(); 
    int orientation = Configuration.ORIENTATION_UNDEFINED; 

     if(getOrient.getWidth() < getOrient.getHeight()){ 
      orientation = Configuration.ORIENTATION_PORTRAIT; 
     }else { 
      orientation = Configuration.ORIENTATION_LANDSCAPE; 
     } 

    return orientation; 
} 

и, в обоих случаях (1 и 2), результат: Когда я запустить приложение в портретной ориентации, он отлично работает. Ориентация экрана заблокирована в портретном режиме. Но, когда я делаю это в альбомной ориентации, он постоянно меняет ориентацию.

Что я делаю неправильно? Заранее спасибо

+3

Почему бы вам не исправить источник вашего сбоя? – CommonsWare

+3

Точно как CommonsWare сказал, что вы не должны «блокировать» ориентацию, чтобы избежать аварии в первую очередь (правильно сохранить и восстановить состояние). –

+0

Я абсолютно второй момент CommonsWare и Charlie COllins. –

ответ

0

не могли бы вы сделать константу, которая является Configuration.ORIENTATION_PORTRAIT и просто сравнить, что с getOrient при использовании метода 2. Тогда, если они равны множество его портрет, еще установить его в ландшафт.

+0

Прошу прощения, но это не работает. Результат тот же: Ok (заблокирован), когда он находится в портретном положении, а не в порядке (не заблокирован) в ландшафте. Спасибо за ответ. – rcerecedar

+0

@ user1728676 Нет проблем.Вы действительно должны попытаться исправить проблему, которая вызывает крушение, как говорили другие. Кроме того, я не знал этого, но то, что сказал jonbonazza, заставит мой ответ не работать в любом случае, и тот факт, что он не работает, должен означать, что то, что он сказал, происходит, и теперь мы оба знаем. – TronicZomB

1

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

+0

Действительно, приложение si настолько простое (это всего лишь основное действие с двумя флажками и одной кнопкой, из которых оно вызывает другое действие, сделанное с помощью телефонной заставки), что я не могу представить другого способа исправить это, что было ранее. Основная проблема связана скорее с версией Android, чем с приложением. – rcerecedar

Смежные вопросы