Problemas al manejar los cambios de orientación

Necesito manejar cambios de orientación en mi aplicación de Android. Para este propósito, decidí usar la clase de conveniencia OrientationEventListener . Pero su método de devolución de llamada se da un comportamiento algo extraño.

Mi aplicación se inicia en el modo de retrato y, a continuación, cambia a la lanscape uno. Tengo un código personalizado que se ejecuta en el método onOrientationChanged devolución de llamada que proporciona alguna lógica de manejo de interfaz de usuario adicional: tiene algunas llamadas a findViewById . Lo que es extraño es que cuando se cambia de nuevo de paisaje a modo vertical onOrientationChanged callback se llama dos veces, y lo que es aún peor – la segunda llamada se trata de mal ContextfindViewById método comienza a devolver null . Estas llamadas se realizan directamente desde MainThread

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listener = new OrientationListener(); } @Override protected void onResume() { super.onResume(); // enabling listening listener.enable(); } @Override protected void onPause() { super.onPause(); // disabling listening listener.disable(); } 

He replicado el mismo comportamiento con una Activity ficticia sin ninguna lógica excepto para uno que se ocupa de orientación hadling. Inicie el cambio de orientación desde el emulador de Android 2.2 presionando Ctrl + F11 ¿Qué podría estar mal?

Actualización: Clase interna que implementa OrientationEventListener

 private class OrientationListener extends OrientationEventListener { public OrientationL() { super(getBaseContext()); } @Override public void onOrientationChanged(int orientation) { toString(); } } 

}

3 Solutions collect form web for “Problemas al manejar los cambios de orientación”

Este es un error documentado en el emulador SOLAMENTE. Un dispositivo real no exhibirá este comportamiento de doble ciclo de vida. Tuve el mismo problema hace un tiempo y desaparece en un dispositivo real.

Yo sugeriría ignorar el problema si usted puede probando cambios de orientación en una dirección hasta que usted consigue sus manos en un teléfono físico. De lo contrario, podría "omitir" el segundo conjunto de llamadas del ciclo de vida manteniendo un booleano estático alrededor de lo que indica que ya pasó por el primer conjunto.

Consulte este informe de incidencias para obtener más información.

¿Has intentado usar onConfigurationChanged?

 @Override public void onConfigurationChanged(Configuration newConfig) { if(newConfig.equals(Configuration.ORIENTATION_LANDSCAPE)… 

Añadir android: configChanges = "orientación" en el archivo de manifiesto en la etiqueta de actividad como

<activity android:label="@string/app_name" android:configChanges="orientation" android:name=".com.androidpeople">

  • Cambio de orientación de la pantalla de la tableta: no se ha encontrado ninguna vista para id para Fragment
  • Cambiar la orientación de la pantalla mediante un botón
  • Emulador de panal invertido pantalla en retrato
  • ¿Debo hacer diferente diseño (archivos xml) para móviles android diferentes
  • ¿Tengo que usar el acelerómetro en Android para que mis fotos se orienten correctamente?
  • Manejo de la orientación de la pantalla del androide para spinner
  • Android: Guardar el estado de la aplicación en el cambio de orientación de la pantalla
  • Cómo manejar los cambios de orientación de la pantalla cuando hay una asyntax ejecutando con android 4.x
  • Cómo arreglar la orientación de la pantalla en vertical para toda mi aplicación PhoneGap
  • Problemas al manejar los cambios de orientación
  • Después de que los botones de cambio de orientación en un widget no responden
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.