Cómo usar onConfigurationChanged() y newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE en Android 2.3.3

Resuelto Rajesh asked hace 54 años • 6 respuestas

Estoy usando onConfigurationChanged(). En eso, cuando cambio de LandScape a Portrait, llama if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)y cambia a Portrait desde LandScape. Pero cuando cambio de Retrato a Paisaje paisajístico, no cambia a Paisaje paisajístico porque if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)así lo llama, no cambia de Paisaje paisajístico a Retrato. Por favor ayuda.

public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        //int orientation = this.getResources().getConfiguration().orientation;

        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            Log.d("Entered to change as Portrait ","PPPPPPPPPPPPPPPPP");
            setContentView(R.layout.settings);
        } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Log.d("Entered to change as LandScape ","LLLLLLLLLLLLLLLLLLLL");
            setContentView(R.layout.settings);
        }

    }
Rajesh avatar Jan 01 '70 08:01 Rajesh
Aceptado

Simplemente escriba el siguiente código en el onConfigurationChangedmétodo y pruebe

if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

    Log.e("On Config Change","LANDSCAPE");
}else{

    Log.e("On Config Change","PORTRAIT");
}

y escriba el android:configChanges="keyboardHidden|orientation"en su archivo de manifiesto como este

<activity android:name="TestActivity"
           android:configChanges="keyboardHidden|orientation">

está funcionando a mi lado, espero que te ayude.

Si estás en una tableta, agrega también |screenSizeaandroid:configChanges

Ajay avatar Mar 16 '2012 07:03 Ajay

Como se indica en la sección Manejo de cambios en el tiempo de ejecución de los documentos, también debe tener en cuenta:

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 se reinicie el tiempo de ejecución debido a un cambio de orientación al desarrollar para el nivel de API 13 o superior (según lo declarado por los atributos minSdkVersion y targetSdkVersion), debe incluir el valor "screenSize" además del valor de "orientación". Es decir, debes decalare android:configChanges="orientation|screenSize". Sin embargo, si su aplicación tiene como objetivo el nivel API 12 o inferior, entonces su actividad siempre maneja este cambio de configuración por sí misma (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo Android 3.2 o superior).

Lukas Hanacek avatar Feb 26 '2013 09:02 Lukas Hanacek

El problema es con el android:configChanges="orientation|keyboardHidden".

si lo elimina |keyboardHiddende androidmanifest.xml, onConfigurationChanged solo se activa cuando gira de horizontal a vertical, no cuando pasa de vertical a horizontal (al menos en el emulador predeterminado).

Espero que esto ayude.

Deva avatar Mar 05 '2012 12:03 Deva

Además de las respuestas anteriores: si anula el onConfigurationChangedmétodo en combinación con la actualización del archivo de manifiesto, está diciendo que lo está manejando configurationchangesusted mismo. Por lo tanto agregando:

setContentView(R.layout.layout.xml);

En su onConfigurationChangedmétodo, donde el diseño es su archivo de diseño, solucionará el problema.

 avatar Feb 24 '2017 07:02