Android onConfigurationChanged () no se llama en Actividad
Me doy cuenta de que hay un par de otros puestos sobre este tema, sin embargo las soluciones para esos puestos no funcionan para mí.
Básicamente, quiero dejar de Activar de reiniciar en un cambio de orientación del dispositivo. Para ello, he modificado la actividad en el archivo de manifiesto:
- ¿Evita que la orientación de Live Wallpaper cambie cuando se abre una aplicación y se cambia la orientación?
- ¿Cómo conservar la instancia de fragmento de fragmento de reproducción de vídeo después de un cambio de orientación?
- Android: orientación manual de la pantalla sin reiniciar la actividad?
- Odroid-XU4 Android orientación a pantalla completa
- Detectar la orientación de un vídeo grabado en android
<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden"></activity>
Y he sobrepasado onConfigurationChanged()
en mi Actividad:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); System.out.println("IN onConfigurationChanged()"); }
Sin embargo, la actividad sigue reiniciándose tras un cambio de orientación y el método onConfigurationChanged()
no se está llamando.
¿Alguien sabe por qué esto puede estar sucediendo?
- ¿El error de AdView causó que todas las vistas de la Web dejen de cargarse cuando cambia la orientación y se están ejecutando múltiples subprocesos?
- ConfigChanges = "orientation" no se activa en Galaxy Nexus
- Android PhoneGap obtener guiñada, tono, rollo, relativo a las coordenadas de tierra
- La dirección de la brújula es diferente dependiendo de la orientación del teléfono
- Las vistas agregadas dinámicamente desaparecen en orientación en Android
- ¿Calcula orientación relativa teniendo azimut, tono y rollo en android?
- Cómo obtener el ancho de ventana correcto en el cambio de orientación para dispositivos Android, tabletas y móviles
- Tarea de fondo, diálogo de progreso, cambio de orientación - ¿hay alguna solución de trabajo 100%?
Debe utilizar 13 API y establecer esta configuración en la parte de su actividad del manifiesto: android: configChanges = "orientation | keyboardHidden | screenSize"
Funciona bien. En toda la versión de Android.
Lo único que funcionó fue usar getLastNonConfigurationInstance (). http://developer.android.com/reference/android/app/Activity.html#getLastNonConfigurationInstance ()
No debe utilizar setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); Método de llamar a cualquier lugar en su aplicación esto evitará llamar a método onConfigChanged ().
Cambie su manifiesto a siguiente
<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden|screenSize"></activity>
Y remítase a este enlace para obtener una explicación detallada.
Si define la orientación configchanges = en su manifiesto, la actividad no se reiniciará, pero en lugar de ello, onConfigurationChanged se llamará como lo ha implementado actualmente. Primero trate de registrar que con la log de la clase de registro (esta es la forma correcta de registrar las cosas en android no utilizar el sistema fuera de esto es considerado una mala práctica) y antes de super pero eso es sólo un 1% Te está pasando
El segundo caso es que tiene la actividad actual anidada en un tabHost por ejemplo o Grupo de actividad. Si su actividad tiene una actividad de padre, el cambio de configuración debe agregarse en ese y la devolución de llamada ocurrirá allí.
Si ese es el caso y desea enviar el resultado o también hacer algo en el niño, entonces usted necesita para obtener una referencia al niño en el padre y llamar a un método en él para los cambios.
Si tienes un fragmento, entonces necesitas esto también:
void setRetainInstance(boolean retain)
Controlar si una instancia de fragmento se conserva a lo largo de la recreación de actividad (por ejemplo, a partir de un cambio de configuración).
Me encontré con esto y ponerlo a 'true' lo arregló.
Utilicé esto, y ayudó:
package="com.s2dio.evallet" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
Modifique su método onConfigurationChanged
a lo siguiente
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(); } }
- Android: Diseño de iconos diferentes para densidades de pantalla
- Android switchpreference ¿cómo puedo configurar el valor predeterminado de la preferencia de conmutador?