Pregunta Android, ¿cómo no destruir la actividad cuando giro el dispositivo?


Tengo una aplicación que funciona solo en modo retrato, y he realizado los cambios en mi archivo de manifiesto para cada actividad, la orientación es vertical. Pero cuando giro el dispositivo, la actividad vuelve a crearse. ¿Cómo no destruir la actividad?


74
2017-07-25 13:20


origen


Respuestas:


por API 12 y abajo: agregar

android:configChanges="orientation"

Agrega "screenSize" si estás apuntando API 13 o superior porque cada vez que cambie su orientación, también cambiará el tamaño de su pantalla; de lo contrario, los dispositivos nuevos continuarán destruyendo su actividad. Consulte la respuesta de Egg a continuación para obtener más información sobre el uso de "screenSize"

android:configChanges="orientation|screenSize"

a su actividad en AndroidManifest.xml. De esta forma, tu Actividad no se reiniciará automáticamente. Ver la documentación para más información


117
2017-07-25 14:11



Del documento oficial que dijo flurin,

Nota: si su aplicación se dirige a API nivel 13 o superior (como declarado   por los atributos minSdkVersion y targetSdkVersion), entonces deberías   también declara la configuración de "tamaño de pantalla", porque también cambia   cuando un dispositivo cambia entre orientaciones vertical y horizontal.

Por lo tanto, si su aplicación se dirige al nivel de API 13 o superior, debe establecer esta configuración en su lugar:

android:configChanges="orientation|screenSize"


103
2017-07-14 12:38



La solución correcta es

android: configChanges = "orientation | screenSize"

Documentación de Android:

El tamaño de pantalla actual disponible ha cambiado. Esto representa un cambio en el tamaño disponible actualmente, relativo a la relación de aspecto actual, por lo que cambiará cuando el usuario cambie entre paisaje y retrato. Sin embargo, si su aplicación se dirige al nivel API 12 o inferior, su actividad siempre maneja esta configuración por sí misma (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo con Android 3.2 o superior).


8
2018-06-05 09:21



Estuve estropeando esto un poco y luego reinterpreté que dentro del archivo Manifest estaba colocando los configChanges en el nivel de la Aplicación y no en el Nivel de Actividad. Aquí es cómo se ve el código cuando funciona correctamente para mí.

Image of correct manifest files code


1
2018-02-10 16:28



Mire este código en la imagen flotante. Tiene la forma más interesante de manejar la rotación de pantalla. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation


0
2017-07-26 12:20



escribir en manifiesto:

android:configChanges="orientation|screenSize|keyboardHidden"

y anule esto en actividad que resolvió su problema:

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

-1
2018-02-04 17:39