Android, как не уничтожить активность, когда я вращаю устройство?


У меня есть приложение, которое работает только в портретном режиме, и я внес изменения в мой файл манифеста для каждого вида деятельности ориентация на портрет. Но когда я поворачиваю устройство, активность снова воссоздается. Как не разрушить активность?

6 74

6 ответов:

на API 12 и ниже добавить

android:configChanges="orientation"

добавить "screenSize", если вы нацелены API 13 или выше потому что всякий раз, когда ваша ориентация меняется, так что ваш размер экрана, в противном случае новые устройства будут продолжать уничтожать вашу деятельность. Смотрите ответ яйца ниже для получения дополнительной информации об использовании "screenSize"

android:configChanges="orientation|screenSize"

к вашей деятельности в AndroidManifest.XML. Таким образом, ваша деятельность не будет перезапущена автоматически. Смотрите в документация дополнительная информация

из официального документа flurin сказал:

Примечание: Если ваше приложение нацелено на уровень API 13 или выше (как объявлено по атрибутам minSdkVersion и targetSdkVersion), то вы должны также объявить "размер экрана" настройки, так как он меняется когда устройство переключается между книжной и альбомной ориентацией.

поэтому, если ваше приложение нацелено на уровень API 13 или выше, вы должны установить эту конфигурацию вместо этого:

android:configChanges="orientation|screenSize"

правильное решение-это

android: configChanges= "ориентация / screenSize"

документация для Android:

текущий размер экрана изменился. Это представляет собой изменение в текущем доступном размере относительно текущего соотношения сторон, поэтому будет изменяться, когда пользователь переключается между альбомной и портретной ориентацией. Однако если ваше приложение нацелено на уровень API 12 или ниже, то ваша активность всегда обрабатывает это изменение конфигурации сам (это изменение конфигурации не перезапускает вашу деятельность, даже при запуске на Android 3.2 или выше устройства).

Я немного испортил это, а затем понял, что внутри файла манифеста я помещал configChanges на уровень приложения, а не на уровень активности. Вот как выглядит код, когда он правильно работает для меня.

Image of correct manifest files code

посмотрите на этот код в плавающем изображении. Он имеет самый интересный способ обработки вращения экрана когда-либо. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation

писать в манифесте:

android:configChanges="orientation|screenSize|keyboardHidden"

и переопределить это в деятельности, которая решила вашу проблему:

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
}