Tengo una aplicación que funciona solo en modo vertical, y he realizado los cambios en mi archivo de manifiesto para cada actividad, la orientación debe ser vertical. Pero cuando giro el dispositivo, la actividad se recrea nuevamente. ¿Cómo no destruir la actividad?
81
Respuestas:
Para API 12 e inferior : agregue
android:configChanges="orientation"
Agregue "screenSize" si está apuntando a API 13 o superior porque siempre que cambia su orientación, también lo hace el tamaño de su pantalla; de lo contrario, los nuevos dispositivos 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, su actividad no se reiniciará automáticamente. Consulte la documentación para obtener más información.
fuente
Del documento oficial, flurin dijo:
Entonces, si su aplicación tiene como objetivo el nivel de API 13 o superior, debe establecer esta configuración en su lugar:
android:configChanges="orientation|screenSize"
fuente
La solucion correcta es
android:configChanges="orientation|screenSize"
Documentación de Android:
fuente
Estuve arruinando esto un poco y luego me di cuenta de que dentro del archivo Manifest estaba colocando configChanges en el nivel de Aplicación y no en el Nivel de Actividad. Así es como se ve el código cuando funciona correctamente para mí.
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
fuente
Ahora que Android es compatible con la pantalla dividida ("ventana múltiple" en el lenguaje de Android), probablemente también desee agregar screenSize | smallestScreenSize | screenLayout | orientación. Entonces, para manejar la rotación y la pantalla dividida, querrá algo como esto en Android: configChanges
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
fuente
Mira este código en Imagen flotante. Tiene la forma más interesante de manejar la rotación de la pantalla. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation
fuente
escribir en manifiesto:
android:configChanges="orientation|screenSize|keyboardHidden"
y anule esto en la actividad que resolvió su problema:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
fuente