Activité de gestion de la rotation dans Android

J'ai besoin d'appliquer des mises en page différentes pour les orientations portrait et paysage de mon activité. D'ailleurs, j'ai besoin d'afficher une alerte si l'orientation portrait.

J'ai spécifié android:configChanges="orientation|keyboardHidden" dans AndroidManifest. J'ai également remplacer onConfigurationChanged méthode comme ceci:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    Log.d("tag", "config changed");
    super.onConfigurationChanged(newConfig);

    int orientation = newConfig.orientation;
    if (orientation == Configuration.ORIENTATION_PORTRAIT)
        Log.d("tag", "Portrait");
    else if (orientation == Configuration.ORIENTATION_LANDSCAPE)
        Log.d("tag", "Landscape");
    else
        Log.w("tag", "other: " + orientation);

    ....
}

Lors de la rotation de paysage à portrait journal ressemble:

config changed
Portrait

Mais, tandis que l'évolution du mode portrait au mode paysage, il ressemble

config changed
Portrait
config changed
Landscape

Pourquoi onConfigurationChanged est appelé deux fois? Comment puis-je l'éviter?

OriginalL'auteur darja | 2010-09-25