2010-03-20 16 views
20

He estado sacudiendo mi cerebro durante horas sobre este tema. Creé un main.xml y diseñé uno para el formato res/layout-land (landscape) y otro para portrait in res/layout.Paisaje de orientación de la pantalla de nuevo a retrato no funciona

Cuando giro el emulador (ctrl-F11), mi aplicación gira correctamente hacia el paisaje con el main.xml correcto, pero una rotación posterior a retrato solo mantiene el paisaje mail.xml.

Esto se hizo en un 2,0 AVD ..

Fuera de despiration he descargado el nuevo Código de ejemplo para múltiples resoluciones y tuvo que crear un nuevo 2.1 AVD, a mi rotación sorpresa con esta aplicación funciona correctamente como se esperaba. Entonces decidí probar mi aplicación en el 2.1 AVD y funciona perfectamente.

Entonces, ¿esto es un error en una AVD 2.0 o hay algo especial que necesito hacer para las versiones de < 2.1 SDK?

Esto me está volviendo loco porque en ningún lugar alguien mencionó este problema.

Gracias de antemano

+0

Veo lo mismo en el emulador 2.3.3 ahora ... 1.6 y 2.1 funcionan bien ... dificultan las pruebas :) – Jay

Respuesta

3

A menos que especifique

<activity android:name="MainActivity" android:configChanges="orientation"> 

En su manifiesto, creo que su aplicación debe seleccionar automáticamente el layout.xml correcta. Por lo tanto, parece un error en el emulador para mí. De todos modos, encontré que el emulador tiene errores de otras maneras. Ex. ejecuta el código dos veces cuando cambia la orientación hacia atrás.

+0

Cuando cambia la orientación, la actividad se recrea y su método onCreate() es llamado de nuevo que recrea toda la actividad. Entonces, no es un error. – YuDroid

0

Sí, el emulador tiene errores cuando se trata de cambios de orientación. No he experimentado este problema específico, pero a veces hace cosas extrañas. Sin embargo, esto definitivamente no es un problema con los SDK de < 2.1, al menos en un teléfono físico, porque todavía estoy atascado con v1.5 en mi Hero y maneja adecuadamente los cambios de orientación seleccionando la carpeta de diseño correcta para obtener los archivos xml de.

0

Solo he hecho desarrollo 2.1, pero otra idea que tuve fue probar CTRL-F12 (Cambiar a la orientación de diseño SIGUIENTE) en lugar de CTRL-F11 (Cambiar a orientación de diseño ANTERIOR() y ver si algo cambia . Esto es de Controlling the Emulator.

Además, hay una serie de métodos de ciclo de vida que podría anular para controlar lo que está sucediendo detrás de las escenas. Eso puede hacerle saber si hay un error en el emulador.

1

soy usando Eclipse para Java Helios, y Android 2.2 y yo experimentamos este mismo problema en mi computadora portátil. Al menos averigüé cuál era el problema para mí. A veces trabajo en mi computadora portátil en un área que no tiene wifi, así que no estoy conectado a Internet y esto parece causar este problema. Lo probé yendo a un punto de acceso wifi y, por supuesto, el cambio entre retrato y paisaje y viceversa funciona bien. Tal vez el emulador solo tiene que tener una conexión para hacer eso o es un error en el emulador.

9

FWIW, se informó oficialmente como error here.

+3

La solución consiste en presionar el botón de inicio cuando se está en modo vertical, lo que restablecerá el sensor de gravedad – StuTheDog

0

También tuve el mismo problema. Lo solucioné No creo que esto sea un error del emulador. Creo que en algunos teléfonos reales también se comportará así. La razón principal es que la actividad no es refrescante. Puede hacer una cosa: anular

public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
    startActivity(getIntent()); 
    finish(); 

} 

y volver a cargar la actividad actual. Esto te ayudará.

4

Se instaló un nuevo entorno de desarrollo de Android y se creó un nuevo 2.3.3 AVD. (Tanto brazo como x86). Ambos tienen el mismo problema, incluso con las aplicaciones del sistema. Por lo tanto, no es un error en su código, porque las aplicaciones del sistema tienen el mismo problema.

Sin embargo, presionar 'inicio' y reiniciar la aplicación funciona para volver a mostrarlo.

Cuestiones relacionadas