Intereting Posts
Лямбда-выражения разбиваются с помощью IncompatibleClassChangeError в Android при использовании разъема Есть ли способ распечатать трассировку стека по требованию? Какие инструменты с открытым исходным кодом вы используете при разработке / тестировании Android? Могу ли я получить ширину и высоту файла изображения из uri в android? Отправить SMS с помощью сервиса adb shell call isms Android 4.1.2 Проблема с Aquery Android на Android 4.4 Kitkat Получить размер файла в android sdk? Преобразование String в DateTime: Android Замена фрагмента на другой фрагмент внутри группы действий Кнопки «Назад» и «Домой» нажали на Android-устройства (cocos2d-x 3) Как читать выбранное приложение для определения местоположения в Android M – API 23 Как избежать утечек Eclipse на XServer при редактировании файлов Android XML? FATAL EXCEPTION: главная java.lang.UnsatisfiedLinkError в библиотеке Android Studio Ошибка вызова метода в NPObject! В Android 2.2 LocationManager.removeUpdates (слушатель), не удаляющий приемник местоположения

Как отличить изменение ориентации и оставить андроид приложения

Я понимаю, что когда меняется ориентация экрана, вызывается текущая деятельность onDestroy (), за которой следует onCreate (), чтобы эффективно воссоздать активность. Мне нужно знать, как программировать, выводится ли приложение или изменяется только ориентация.

Один из методов заключается в том, чтобы предыдущая активность уведомляла меня, когда вызывается метод onResume (), это даст мне знать, что пользователь нажал кнопку «Назад», и ориентация не была изменена.

PS Я ищу решение, более элегантное, чем прослушивание щелчка на задней панели оборудования.

Вот что я хотел сделать:

У меня есть две вкладки, когда активность вводится в первый раз или пользователь покинул эту активность и теперь ее вводит, на основе некоторого критерия отображается определенная вкладка.

Когда меняется ориентация, мне нужно оставаться на одной вкладке.

Используйте метод isFinishing() Activity.

 @Override protected void onDestroy() { super.onDestroy(); if (isFinishing()) { // do stuff } else { //It's an orientation change. } } 

Вы можете использовать isChangingConfigurations() Читать из документации

Убедитесь, что эта активность находится в процессе уничтожения, чтобы воссоздать новую конфигурацию. Это часто используется в onStop (), чтобы определить, должно ли состояние быть очищено или будет передано в следующий экземпляр действия через onRetainNonConfigurationInstance ().

Возвращает Если активность срывается для воссоздания с новой конфигурацией, возвращается true; Else возвращает false

Объясните простым способом пример

isChangingConfigurations()

Это метод, используемый для проверки того, будет ли эта активность разрушена, чтобы снова воссоздаваться (в результате изменения ориентации)

Как это использовать ?

Если вы используете api> = 11, тогда не проблема, но если вы используете api <11, тогда мы должны обработать это руководство по методу. Я делаю логическую переменную с именем IsconfigChange

 private boolean IsconfigChange ; ... protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IsconfigChange = true ; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public boolean isChangingConfigurations() { if(android.os.Build.VERSION.SDK_INT >= 11){ Log.i("DEBUG", "Orientation changed api >= 11 "); return super.isChangingConfigurations(); }else { Log.i("DEBUG", "Orientation changed api < 11 "); return IsconfigChange; } } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override protected void onStop() { super.onStop(); if(isChangingConfigurations()){ Log.i("DEBUG", "isChangingConfirgurations OnStop Called"); } else{ Log.i("DEBUG", "OnStop Called"); } } 

летний

Вы можете использовать isChangingConfigurations в onStop чтобы проверить, прекратится ли приложение, или из-за изменения ориентации.

Или вы можете использовать isFinishing проверить мой ответ здесь

Для API lvl> = 11 У Activity есть метод isChangingConfigurations()

Вы можете захватить значение метода Activity.getChangingConfigurations () в вашем onDestroy . Это вернет результат, например ORIENTATION_PORTRAIT , который вы можете проверить против текущей ориентации .

Обратите внимание, что изменения активности и изменения ориентации не являются единственными условиями для рассмотрения здесь: как насчет возврата на главный экран, входящих телефонных звонков и других приложений, крадущих фокус, и всех других сценариев, когда ваша активность больше не находится на переднем плане Из стека?

Большую часть времени вам не нужно это делать. Если вы пытаетесь исправить некоторую проблему состояния действия (часто проявляющуюся как NullPointerException при вращении экрана) путем захвата события ориентации; Просмотрите жизненный цикл Android-активности и убедитесь, что вы не просто пытаетесь взломать исправление недостатка дизайна. Опубликуйте оригинальную проблему на этом сайте, если вы не уверены.