Esta mañana se me ocurrió un problema al tratar de manejar el onConfigurationChanged
evento. El problema es que el método, que anulo, no se llama cuando cambio la orientación del teléfono. No me llaman en absoluto.
Puse android:configChanges="orientation"
la actividad definida en el manifiesto como se menciona en la documentación de Android, pero esto no hace la diferencia.
¿Se te ocurrió este problema?
android:configChanges
Esto es lo que dijo Google javadoc:Note: If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Respuestas:
Este fue mi gremlin por el mismo problema:
(De http://developer.android.com/guide/topics/resources/runtime-changes.html )
TL; DR: agregue "| screenSize" a configChanges cuando apunte a API nivel 13+
fuente
+1
desde mi lado"screenSize"
lo fue.Algunos dispositivos de 4.0 no llaman a onConfigurationChanged. Simplemente agregue un oyente a screenSize también.
fuente
onConfigurationChanged
, probar contraConfiguration.ORIENTATION_LANDSCAPE
e incluir SOLOandroid:configChanges="orientation"
en el manifiesto no fue suficiente para mi tableta Nexus 7. GraciasEl problema era que si usabas este método
para forzar la orientación de su
Activity
modo vertical, no es candidato para recibirorientation
cambios.Entonces la solución es no
setRequestOrientation
a un modo particular. Pero en lugar de usarSCREEN_ORIENTATION_SENSOR.
fuente
onConfigChanged
, cuando el usuario gira su teléfono. El mismo comportamiento que en la aplicación de YouTube. Esto es posible?compruebe que su dispositivo tiene la configuración "Rotación de pantalla" activada
fuente
android:screenOrientation
en un nivelActivity
o en unoApplication
.android:configChanges="orientation|keyboardHidden"
lugar.fuente
Pasé decenas de minutos para descubrir por qué no funcionó. yo añadí
screenSize
pero todavía no funcionó.Resultó que había agregado
android:configChanges
al<application>
elemento, no al<activity>
elemento como debería haberlo hecho!Bueno, por supuesto, este fue mi error, pero todos sabemos que todos pasamos mucho tiempo por este tipo de error tonto. Por lo tanto, estoy agregando esta respuesta en caso de que haya otro programador tonto como yo.
fuente
Macarse tiene el 100% del dinero con su segunda opción.
Tratar
android:configChanges="orientation|keyboardHidden|screenSize"
Tuve exactamente el mismo problema, y en el emulador 1.6 agregué
keyboardHidden
causasonConfigurationChanged
a las que llamar durante la rotación. Retíralo y deja de llamarse.fuente
Tuve el mismo problema:
onConfigurationChanged
no se me llamó cuando el dispositivo cambió de orientación a pesar de tenerloandroid:configChanges="orientation|keyboardHidden"
en el archivo de manifiesto. Usé el código recortado compartido porDeva
aquíla orientación no funciona en 2.3.3?
para verificar si
onConfigurationChanged
se estaba llamando. No era.Después de algunas horas de experimentar, me di cuenta de que tenía las siguientes líneas en el archivo de manifiesto
y al cambiar
android:targetSdkVersion="15"
aandroid:targetSdkVersion="8"
,onConfigurationChanged
comenzó a ser llamado. Entonces, parte del manifiesto finalmente se veía asífuente
attribute: screensize
'? Puede ser útil si se proporcionan más detalles.Acabo de descubrir que si tienes:
en el manifiesto, onConfigurationChanged () no se llamará también ...
Esto puede ser similar a:
esa orientación de configuración bloquea el onConfigurationChanged ().
fuente
No use ninguna versión de SDK de destino para complicarlo. y para todos los niveles de API use esto como escucha de cambio de configuración
fuente
No estoy seguro de que este sea el mejor lugar para ello, pero al encontrarme con este problema, observé algo interesante.
Si el oyente onConfigurationChanged () NO funciona, se llama nuevamente a onCreate () cada vez que se cambia la orientación.
Si el oyente onConfigurationChanged () está funcionando, entonces se llama a ese método en lugar del onCreate () cuando cambia la orientación.
fuente
Todas las soluciones no funcionan util. Intento eliminar mi actividad de tema en el archivo de manifiesto de Android. Tan extraña
fuente
Ninguna de las sugerencias funcionó para mí (tuve un proyecto nativo con este problema), pero después de horas de depuración descubrí que si tienes esta línea en el AppTheme de styles.xml
entonces la aplicación no rotará.
fuente
@ thanhbinh84 Me dio una idea de lo que podría estar causando esto.
¡Eliminarlo
<item name="android:windowIsTranslucent">true</item>
de mi tema en styles.xml lo arregló!fuente
Tuve el mismo problema y tenía "android: screenOrientation" y "android: configChanges" especificados en el manifiesto. Cuando eliminé el primero, onConfigurationChanged () fue llamado en la rotación. Extraño pero funciona)
fuente
¿Tienes
android.content.res.Configuration
en tus declaraciones de importación? Eclipse puede insertar importaciones automáticamente si presionaCtrl+Shift+O
.Si eso falta, el compilador no podrá reconocer que está anulando legítimamente el método de superclase y, por lo tanto, arrojará un error.
fuente