Назад к вопросам
Middle
156
questionbank
Можно ли сделать так, чтобы активити не пересоздавалась при повороте экрана?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Да, можно. Есть два основных способа.
-
** Объявить
configChangesв манифесте:** ВAndroidManifest.xml, для<activity>добавить атрибутandroid:configChanges="orientation|screenSize".<activity android:name=".MainActivity" android:configChanges="orientation|screenSize" />В этом случае активити не пересоздается, а вызывается метод
onConfigurationChanged(), который нужно переопределить для обработки изменений конфигурации.override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) // Обработка изменений, например: // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { // // Изменен на альбомную ориентацию // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { // // Изменен на портретную ориентацию // } } -
Зафиксировать ориентацию экрана: Можно установить фиксированную ориентацию для активити, добавив атрибут
android:screenOrientationв манифест.<activity android:name=".MainActivity" android:screenOrientation="portrait" />или
<activity android:name=".MainActivity" android:screenOrientation="landscape" />В этом случае ориентация активити не будет меняться вне зависимости от поворота устройства, и пересоздание не произойдет.