Android onConfigurationChanged no se llama
Tengo problemas con decirle a Android que no llame a onCreate()
cuando cambie la orientación. He añadido android:configChanges="orientation"
a mi manifiesto pero aún cuando la orientación cambia onCreate()
se llama. Aquí está mi código.
AndroidManifest.xml
- ¿Cómo tratar con dispositivos Android que no respetan los datos de orientación EXIF?
- Android configuración de la orientación de la actividad por código
- Problema con la orientación de la imagen de Android en Motorola Droid
- Cómo configurar la orientación de la cámara Android correctamente?
- ¿Cuál es la diferencia entre Display.getRotation () y Display.getOrientation () aparte del hecho de que Display.getOrientation () está obsoleto?
<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>
SearchMenuActivity.java
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the current layout to the search_menu setContentView(R.layout.search_menu_activity); Log.d(TAG, "onCreate() Called"); } @Override public void onConfigurationChanged(Configuration newConfig) { //don't reload the current page when the orientation is changed Log.d(TAG, "onConfigurationChanged() Called"); super.onConfigurationChanged(newConfig); }
Y mi salida LogCat
06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called //Orientation Changes 06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called
¿Alguien sabe lo que estoy haciendo mal? Gracias.
- Viewflipper Receptor no registró error mientras cambio de orientación en 2.1 y 2.2
- Mostrar imágenes desde el tamaño de la URL y los problemas de orientación de la pantalla
- Androide: ¿por qué devuelve la devolución de la matriz?
- La parte delantera y trasera del androide captó la cuestión de la orientación de la imagen, giró de manera incorrecta
- ¿Por qué `android: screenOrientation =" detrás "` no hay efecto en android 4.1.2?
- Apoyo a las dos orientaciones del paisaje en Honeycomb
- Bloqueo de orientación de la pantalla
- Cómo utilizar ExifInterface con una secuencia o un URI
Un par de cosas para probar:
android:configChanges="orientation|keyboardHidden|screenSize"
lugar de android:configChanges="orientation"
Asegúrese de que no está llamando a setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
en cualquier sitio. Esto hará que onConfigurationChange () no se dispare.
Comprueba que no android:screenOrientation
en tu manifiesto.
Si nada de eso funciona, lea el documento de Android sobre el manejo de los cambios de tiempo de ejecución y asegúrese de que está haciendo todo correctamente. Puede haber algo en su código que esté causando el problema. http://developer.android.com/guide/topics/resources/runtime-changes.html
EDIT: Como Derrik señaló, asumí que estaba cambiando la configuración con el acelerómetro detectar la forma en que el dispositivo se enfrentaba. Si desea que la configuración cambie al mostrar / ocultar el teclado, los configChanges en el manifiesto también deben incluir keyboardHidden
.
Este fue mi gremlin para el mismo problema:
Precaución: A partir de Android 3.2 (API nivel 13), el "tamaño de pantalla" también cambia cuando el dispositivo cambia entre orientación vertical y horizontal. Por lo tanto, si desea evitar que el tiempo de ejecución se reinicie debido al cambio de orientación al desarrollar para API de nivel 13 o superior (como declarado por los atributos minSdkVersion y targetSdkVersion), debe incluir el valor "screenSize" además del valor "orientation". Es decir, debes decalar android: configChanges = "orientation | screenSize". Sin embargo, si su aplicación se orienta al nivel de API 12 o inferior, su actividad siempre se encarga de este cambio de configuración (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo Android 3.2 o superior).
(De http://developer.android.com/guide/topics/resources/runtime-changes.html )
TL; DR: agregue "| screenSize" a android: configChanges = "orientación" para API 14+
Trate de usar este
android:configChanges="orientation|keyboardHidden|screenSize"
Debe cambiar la entrada configChanges en AndroidManifest.xml a:
android:configChanges="keyboardHidden|orientation"
De lo contrario, al deslizar el teclado no se activa onConfigurationChange () aunque cambie la orientación. Acabo de probar esto en mi HTC Desire Z.
Añada esto a su manifiesto a cada actividad.
android:configChanges="keyboardHidden|orientation|screenSize"
Luego, anule onConfigurationChanged
en su actividad como tal
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
No estaba desencadenando en mi Fragment
( Fragments
no están registrados en el AndroidManifest.xml
) así que tuve que moverlo a la Activity
maneja mi Fragment
, en mi caso el TabsPagerActivity
.
Manifiesto:
<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize"> </activity>
Actividad y Fragmento:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d(TAG, "onConfigurationChanged " + (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "landscape" : "portrait")); }
Salida:
10-29 21:53:26.951 D/FragmentOne: onConfigurationChanged landscape 10-29 21:53:26.951 D/MainActivity:onConfigurationChanged landscape
- Android: error libGL.so: no se puede abrir archivo de objeto compartido: No existe tal archivo o directorio
- El uso de la plantilla Spring Rest causa EOFException