Back to questions
Middle
205
questionbank
Можно ли сделать так, чтобы активити не пересоздавалась при повороте экрана?
Sobes Copilot
Get answers in real time
Answer from AI
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" />В этом случае ориентация активити не будет меняться вне зависимости от поворота устройства, и пересоздание не произойдет.