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

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

Generalmente hay tres formas de hacer esto:

  1. Como algunas de las respuestas sugeridas, puede distinguir los casos de creación de su actividad por primera vez y la restauración de savedInstanceState . Esto se hace anulando onSaveInstanceState y verificando el parámetro de onCreate .

  2. Puede bloquear la actividad en una orientación agregando android:screenOrientation="portrait" (o "landscape" ) a en su manifiesto.

  3. Puede decirle al sistema que quiere android:configChanges="orientation|screenSize" cambios de pantalla especificando android:configChanges="orientation|screenSize" en la etiqueta . De esta forma, la actividad no se recreará, sino que recibirá una callback en su lugar (que puede ignorar, ya que no es útil para usted).

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

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

En el nivel API 13 o superior, el tamaño de la pantalla cambia cuando la orientación cambia, por lo que aún 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:

   

Ahora, cuando cambia la orientación (y el tamaño de la pantalla cambia), la actividad conserva su estado y se llama a 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 lea el siguiente enlace sobre cómo manejar los cambios de tiempo de ejecución:

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

Solo tienes que ir al AndroidManifest.xml y dentro o dentro de las tags de tus actividades, debes escribir esta línea de código porque alguien dice:

 android:configChanges="orientation|screenSize" 

Entonces, tendrás algo como esto:

   

¡Espero que funcione!

  

Simplemente agregue 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.

Según mi experiencia, en realidad es mejor tratar los cambios de orientación correctamente en lugar de tratar de calzar un comportamiento no predeterminado.

Debería 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 que mejor funciona. En su archivo de manifiesto, agregue

   

Y en tu clase de actividad agrega 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 } } 

agregue android:configChanges="keyboardHidden|orientation|screenSize" para todas las tags de actividades de la aplicación en manifest.

Solo agregue esto a su AndroidManifest.xml

  

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

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

  

En el archivo más abundante, agregue a cada actividad esto. Esto ayudará

 android:configChanges = "orientation|keyboard|keyboardHidden|screenLayout|screenSize" 

Guarde los detalles de la imagen en su onPause() o onStop() y onCreate(Bundle savedInstanceState) en 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.

solo use: android:configChanges="keyboardHidden|orientation"

Como mencionó Pacerier,

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 WebView

 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); }