Запретить перезапуск активности при вращении

140
17

У меня есть приложение, которое использует ниже sdk в манифесте:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

Чтобы предотвратить перезапуск активности при повороте экрана, я добавляю в манифест:

 android:configChanges="orientation|keyboardHidden|screenSize"

Нужно ли также переопределять onConfigurationChanged в самой активности, как onConfigurationChanged ниже:

   @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}

или эта строка в манифесте достаточно:

  android:configChanges="orientation|keyboardHidden|screenSize"

Любая помощь будет оценена.

спросил(а) 2021-01-25T19:59:37+03:00 5 месяцев назад
1
Решение
77

Чтобы предотвратить перезапуск активности при повороте экрана

Это, как правило, не очень хорошая идея.

Я добавляю к манифесту: android:configChanges="orientation|keyboardHidden|screenSize"

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

Мне нужно переопределить onConfigurationChanged

Это зависит от того, отличается ли ваш интерфейс от конфигурации, для конфигураций, которые вы указали в android:configChanges (например, портрет отличается от ландшафта?). Если ответ "да", то onConfigurationChanged() - это то, где вы исправите этот пользовательский интерфейс для событий, перечисленных в вашем списке android:configChanges. Если ответ "нет", вам не нужно переопределять этот метод.

ответил(а) 2021-01-25T19:59:37+03:00 5 месяцев назад
45

Явного фрагмента ниже того, что у вас было достаточно, чтобы предотвратить вращение:


android:configChanges="orientation|keyboardHidden|screenSize"

ответил(а) 2021-01-25T19:59:37+03:00 5 месяцев назад
-7

Задавать

android:screenOrientation="portrait"

как было предложено Android - отключить ландшафтный режим?

ответил(а) 2021-01-25T19:59:37+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема