2012-07-01 21 views
5

He leído muchas publicaciones sobre este problema como [este enlace] [1] y una solución es agregar la configuración configCambios para manifestar y manejar el eventoConfigurationChanged para evitar que la actividad onCreate se vuelva a llamar cuando se rota. Lo hice y el evento se desencadena correctamente, sin embargo, después de esta ejecución, también se ejecuta el método onCreate. ¿por qué? ¿Qué me estoy perdiendo? GraciasActividad de Android reiniciada cuando la orientación cambia

manifiesto,

<activity 
      android:name="webPush" 
      android:configChanges="keyboardHidden|orientation"/> 

actividad,

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     setContentView(R.layout.vistaaib); 
    } 

@Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vistaaib); 
... 

Respuesta

11

Creo que esto va a funcionar .........

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

A partir de Android 3.2 (API nivel 13), la pantalla" tamaño "también cambia cuando el dispositivo cambia entre orientación vertical y horizontal. Por lo tanto, si se quiere evitar un rearranque de tiempo de ejecución debido al cambio de orientación en el desarrollo de API de nivel 13 o superior debe utilizar

android:configChanges="orientation|screenSize" 
+0

activando aún onCreate después del evento onConfigChanges – Jaume

+0

¿Ha mencionado esto en el archivo AndroidManifest en la actividad que debe evitarse al invocar onCreate() –

+0

sí, tal como se publicó, webPush es la actividad que su método onCreate necesita ser prevenido – Jaume

1

escribir esta dos líneas de código en el archivo de manifiesto en esa actividad.

Parece que esto resolverá su problema. <activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>

+0

sigue provocando onCreate después del evento onConfigChanges – Jaume

1

Su actividad se reiniciará en cualquier cambio de configuración. Lo más probable es que se reinicie porque el estado del teclado cambia. Trate de añadir esto a los atributos de la actividad:

android:configChanges="orientation|keyboard|keyboardHidden" 
+0

sigue provocando onCreate después onConfigChanges caso – Jaume

+1

si se quiere evitar un rearranque de tiempo de ejecución debido a la orientación cambiar al desarrollar para el nivel API 13 o superior, debe incluir el valor de "tamaño de pantalla" además del valor de "orientación". Es decir, debe descartar android: configChanges = "orientation | screenSize" – Rashid

0

Si está trabajando para el nivel de API de 12 o inferior

En archivo menifest, pone siguiendo justo después de declarar su nombre de actividad.

android:configChanges="orientation" 

e.g.-

<activity 
     android:name=".NameOfYourActivity" 
     android:configChanges="orientation"/> 

Y en Android 3.2 (API nivel 13) o tamaño de la pantalla de versión superior cambios también en la rotación cambia tan nuevas de esto también.

para esto,

android:configChanges="orientation|screenSize" 
2

lo hice. He añadido este código para manifestar y funciona perfecto.

<activity 
     android:name="?" 
     android:label="@string/?" 
     android:theme="@style/?" 
     android:configChanges="orientation|screenSize"> 

Deberá agregar esto en su actividad si desea cambiar algo cuando el dispositivo está girando.

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

siguientes podría ser la razón

Evento: ScreenSize

El tamaño de pantalla disponible actual 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). añadido en el nivel API 13.

por lo que junto con la "orientación" add "ScreenSize", así

Cuestiones relacionadas