Je dois gérer les changements d'orientation dans mon application Android. À cette fin, j'ai décidé d'utiliser OrientationEventListener
classe de commodité. Mais sa méthode de rappel a un comportement quelque peu étrange.Problèmes lors de la manipulation des changements d'orientation
Mon application démarre en mode portrait, puis passe finalement à la lanscape un. J'ai un code personnalisé s'exécutant dans la méthode de rappel onOrientationChanged
qui fournit une certaine logique de gestion de l'interface utilisateur supplémentaire - il a quelques appels à findViewById
. Ce qui est étrange est que lors du basculement du mode paysage au mode portrait onOrientationChanged
rappel est appelé deux fois, et ce qui est encore pire - le deuxième appel est affaire à mauvaiseContext
- méthode findViewById
commence à revenir null
. Ces appels sont faits dès le 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();
}
J'ai reproduit le même comportement avec une Activity
factice sans aucune logique, sauf pour celui qui traite l'orientation LA MANUTENTION. je lance commutateur d'orientation de l'émulateur Android 2.2 en appuyant sur Ctrl + F11 Quoi de mal?
Upd: Classe interne qui implémente OrientationEventListener
private class OrientationListener extends OrientationEventListener {
public OrientationL() {
super(getBaseContext());
}
@Override
public void onOrientationChanged(int orientation) {
toString();
}
}
}
s'il vous plaît envoyer votre code onOrientationChanged trop –
Avez-vous essayé lors des tests sur un téléphone réel? J'ai eu quelques problèmes avec les changements d'orientation qui ne se sont produits que lors des tests sur un émulateur. Cela avait quelque chose à voir avec l'émulateur qui fausse le changement d'orientation de l'écran - j'ai aussi eu un problème avec cela en recréant l'application deux fois. –
Unfortunatelly Je n'ai pas accès au téléphone réel pour l'instant – nixau