2013-08-15 4 views
0

Я пытаюсь реализовать кнопку, чтобы изменить ориентацию активности, однако она идет в альбомный режим, но не возвращается к портрету.Изменение ориентации с помощью onClick android

if(!state){ 
    setRequestedOrientation(MainActivity.SCREEN_ORIENTATION_LANDSCAPE); 
} 
else { 
    setRequestedOrientation(MainActivity.SCREEN_ORIENTATION_PORTRAIT); 
} 
state = !state; 

То, что я прочитал было, есть состояние = ложь, при нажатии на кнопку, изменить ориентацию, то состояние устанавливается как верно, на данный момент, если кнопка будет нажата снова активность изменится назад к пейзажу.

Я также прочитал об использовании переключателя? Но я попытался реализовать это, но не пошел так хорошо, поэтому я попробовал этот метод.

Редактировать

Я реализована с помощью получения вращения поверхности, и они могут подобрать вращение либо 0 или 90

if (orientation==Surface.ROTATION_0) 
{ 
    Toast.makeText(getBaseContext(), "going to landscape", Toast.LENGTH_LONG).show(); 
    setRequestedOrientation(MainActivity.SCREEN_ORIENTATION_LANDSCAPE); 
} 
else if (orientation==Surface.ROTATION_90) 
{ 
    Toast.makeText(getBaseContext(), "going to portrait", Toast.LENGTH_LONG).show(); 
    setRequestedOrientation(MainActivity.SCREEN_ORIENTATION_PORTRAIT); 
} 

Однако, как деятельность идет в ландшафт и тост показан, когда я пытаюсь вернуться к портрету, тост действительно показывает «идущий на портрет», но setRequestOrientation не выполняется. Какая проблема?

+0

Средство при нажатии кнопки вы хотите изменить ориентацию, но ее не произошло. –

+0

Когда ориентация изменяется, активность воссоздается. Итак, я думаю, после изменения ориентации значение 'state' снова' false'. Проверь это. –

ответ

0

Когда действие повернуто, оно уничтожается и воссоздается. Когда это произойдет, вы потеряете значение «состояние». Это приведет к тому, что вы никогда не нажмете другой вариант, так как он всегда возвращается к исходной опции.

Посмотрите на onSaveInstanceState() HERE.

Затем вы можете получить доступ к пакету в методе onCreate() для извлечения значения.

+0

Я смотрел onSaveInstanceState() Я не уверен, что 100%, но я собрал то, что мне нужно использовать outStatu.putBoolean («состояние», состояние), а с onRestoreInstanceState он сохраняетсяInstanceState.getBoolean («state «); Правильно ли это? – user2663646

+0

Это точно. Если вы не хотите внедрять onRestoreInstanceState, вы можете проверить, не имеет ли пакет savedInstanceState значение null внутри onCreate(). Если пакет не является нулевым, просто загрузите там булевский язык. –

+0

Проверьте параметры здесь: http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle) –

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

  • Нет связанных вопросов^_^