Devo gestire i cambiamenti di orientamento nella mia applicazione Android. A tale scopo ho deciso di utilizzare la classe di convenienza OrientationEventListener
. Ma il suo metodo di callback ha un comportamento un po 'strano.Problemi nella gestione delle modifiche all'orientamento
La mia applicazione inizia in modalità verticale e quindi passa a quella panoramica. Ho qualche codice personalizzato in esecuzione nel metodo callback onOrientationChanged
che fornisce una logica di gestione dell'interfaccia utente aggiuntiva - ha alcune chiamate a findViewById
. Che è strano è che quando si passa di nuovo dal paesaggio al modo verticale onOrientationChanged
callback viene chiamata due volte, e ciò che è peggio - la seconda chiamata a che fare con cattivoContext
- metodo findViewById
inizia il ritorno null
. Queste chiamate sono fatte proprio dalla 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();
}
ho replicato lo stesso comportamento con un manichino Activity
senza alcuna logica ad eccezione di uno che si occupa di orientamento hadling. Avvio dell'interruttore di orientamento dall'emulatore Android 2.2 premendo Ctrl + F11 Cosa potrebbe essere sbagliato?
Upd: classe interna che implementa OrientationEventListener
private class OrientationListener extends OrientationEventListener {
public OrientationL() {
super(getBaseContext());
}
@Override
public void onOrientationChanged(int orientation) {
toString();
}
}
}
si prega di inviare il vostro codice onOrientationChanged troppo –
Hai provato questo quando si verifica su un telefono vero e proprio? Ho avuto alcuni problemi con le modifiche all'orientamento che si sono verificate solo durante il test su un emulatore. Ha avuto qualcosa a che fare con l'emulatore falsa il cambio di orientamento dello schermo - Ho anche avuto un problema con esso ricreando l'app due volte. –
Purtroppo non ho accesso al telefono reale per ora – nixau