Ich muss mit Orientierungsänderungen in meiner Android-Anwendung umgehen. Zu diesem Zweck habe ich mich entschieden, OrientationEventListener
Convenience-Klasse zu verwenden. Aber seine Callback-Methode hat ein seltsames Verhalten.Probleme beim Umgang mit Orientierungsänderungen
Meine Anwendung startet im Hochformat-Modus und wechselt schließlich zur LANScape One. Ich habe einige benutzerdefinierte Code in der Callback-Methode onOrientationChanged
ausgeführt, die einige zusätzliche UI-Handling-Logik bietet - es hat ein paar Aufrufe an findViewById
. Was seltsam ist, dass bei der Wiedergabe von Querformat auf Hochformat onOrientationChanged
Rückrufe zweimal aufgerufen Umschalten, und was noch schlimmer ist - der zweite Anruf wird mit schlechtContext
tun - findViewById
Methode beginnt null
zurück. Diese Anrufe sind aus rechts von der 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();
}
ich das gleiche Verhalten mit einem Dummy Activity
ohne Logik repliziert haben mit einer Ausnahme, die mit Orientierung hadling beschäftigt. Ich initiiere Orientierungsschalter vom Android 2.2 Emulator durch Drücken von Strg + F11 Was könnte falsch sein?
Upd: Inner-Klasse, die OrientationEventListener
private class OrientationListener extends OrientationEventListener {
public OrientationL() {
super(getBaseContext());
}
@Override
public void onOrientationChanged(int orientation) {
toString();
}
}
implementiert}
bitte posten Sie Ihre onOrientationChanged Code zu –
Haben Sie versucht, wenn sie auf einem echten Handy testen? Ich hatte einige Probleme mit Orientierungsänderungen, die nur beim Testen auf einem Emulator passiert sind. Es hatte etwas damit zu tun, dass der Emulator die Bildschirmausrichtung verändert - ich hatte auch ein Problem damit, die App zweimal neu zu erstellen. –
Leider habe ich keinen Zugriff auf echte Telefon für jetzt – nixau