No vuelva a cargar la aplicación cuando cambie la orientación

Simplemente no necesito nada para cambiar cuando se gira la pantalla. Mi aplicación muestra una imagen aleatoria cuando se carga por primera vez y girar el dispositivo no debe seleccionar otra imagen aleatoria. ¿Cómo puedo (simplemente) hacer que este comportamiento se detenga?

Hay generalmente tres maneras de hacer esto:

  1. Como algunas de las respuestas sugeridas, podría distinguir los casos de su actividad que se está creando por primera vez y se está restaurando de savedInstanceState . Esto se hace reemplazando onSaveInstanceState y comprobando el parámetro de onCreate .

  2. Puedes bloquear la actividad en una orientación añadiendo android:screenOrientation="portrait" (o "landscape" ) a <activity> en tu manifiesto.

  3. Podría decirle al sistema que quería manejar los cambios en la pantalla especificando android:configChanges="orientation|screenSize" en la etiqueta <activity> . De esta manera, la actividad no se recreará, sino que recibirá una devolución de llamada en su lugar (que puede ignorar, ya que no es útil para usted).

Personalmente me iría con (3). Por supuesto, si bloquear la aplicación a una de las orientaciones está bien con usted, también puede ir con (2).

La respuesta de Xion fue cercana, pero # 3 ( android:configChanes="orientation" ) no funcionará a menos que la aplicación tenga un nivel de API de 12 o menos.

En API de nivel 13 o superior, el tamaño de la pantalla cambia cuando la orientación cambia, por lo que esto todavía provoca que la actividad se destruya y se inicie cuando cambie la orientación.

Simplemente agregue el atributo "screenSize" como lo hice a continuación:

 <activity android:name=".YourActivityName" android:configChanges="orientation|screenSize"> </activity> 

Ahora, cuando cambia la orientación (y el tamaño de la pantalla cambia), la actividad mantiene su estado y se llama onConfigurationChanged() . Esto mantendrá lo que esté en la pantalla (es decir: página web en una vista Web) cuando cambie la orientación.

Aprendí esto desde este sitio: http://developer.android.com/guide/topics/manifest/activity-element.html

Además, esto es aparentemente una mala práctica, así que lee el siguiente enlace sobre cómo manejar los cambios en tiempo de ejecución:

http://developer.android.com/guide/topics/resources/runtime-changes.html

Sólo tienes que ir a AndroidManifest.xml y dentro o en las etiquetas de tus actividades, tienes que escribir esta línea de código como alguien por ahí dijo:

 android:configChanges="orientation|screenSize" 

Así, usted tendrá algo como esto:

 <activity android:name="ActivityMenu" android:configChanges="orientation|screenSize"> </activity> 

¡Espero que funcione!

 <activity android:name="com.example.abc" android:configChanges="orientation|screenSize"></activity> 

Simplemente añada android:configChanges="orientation|screenSize" en la pestaña de actividad del archivo de manifiesto.

Por lo tanto, la actividad no se reiniciará cuando cambie la orientación.

Es mi experiencia que en realidad es mejor tratar con los cambios de orientación correctamente en lugar de intentar calzar un comportamiento no predeterminado.

Debe guardar la imagen que se está mostrando actualmente en onSaveInstanceState() y restaurarla correctamente cuando su aplicación onCreate() a ejecutar onCreate() .

Esta solución es con mucho la mejor de trabajo. En el archivo de manifiesto agregue

 <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="your activity name" android:label="@string/app_name" android:screenOrientation="landscape"> </activity 

Y en su clase de actividad, añada el siguiente código

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { //your code } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { //your code } } 

Sólo tienes que añadir esto a tu AndroidManifest.xml

 <activity android:screenOrientation="landscape"> 

Quiero decir, hay una etiqueta de actividad, agrega esto como otro parámetro. En caso de que necesite orientación vertical, cambie el modo horizontal a vertical. Espero que esto ayude.

Add android:configChanges="keyboardHidden|orientation|screenSize" para todas las etiquetas de actividades de la aplicación en manifiesto.

Guarde los detalles de la imagen en su onPause() o onStop() y onCreate(Bundle savedInstanceState) en el onCreate(Bundle savedInstanceState) para restaurar la imagen.

EDITAR:

Más información sobre el proceso real se detalla aquí http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, ya que es diferente en Honeycomb que las versiones anteriores de Android.

Sólo tiene que usar: android:configChanges="keyboardHidden|orientation"

Como Pacerier mencionó,

android:configChanges="orientation|screenSize"

En el archivo manifiest agregar a cada actividad esto. Esto ayudará a android: configChanges = "orientación | teclado | keyboardHidden | screenLayout | screenSize"

Todas las respuestas anteriores no funcionan para mí. Por lo tanto, he fijado por mencionar la label con screenOrientation como a continuación. Ahora todo bien

 <activity android:name=".activity.VideoWebViewActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize"/> 

http://animeshrivastava.blogspot.in/2017/08/activity-lifecycle-oncreate-beating_3.html

 @Override protected void onSaveInstanceState(Bundle b) { super.onSaveInstanceState(b); String str="Screen Change="+String.valueOf(screenChange)+"...."; Toast.makeText(ctx,str+"You are changing orientation...",Toast.LENGTH_SHORT).show(); screenChange=true; } 

Agregue este código después del método onCreate , en su actividad que contiene el WebView

 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.