Ho un problema con un evento di segnalazione OrientationEventListener
anche dopo averlo disabilitato.onOrientationChanged() viene chiamato quando OrientationEventListener è disabilitato
Sto lavorando con tre frammenti in un layout di tabulazione e solo uno dei frammenti richiede modifiche di orientamento. Quando mi allontano da questo frammento, voglio che gli eventi di orientamento smettano di avere un effetto.
La porzione del ciclo di vita del mio codice è il seguente:
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (orientationEventListener == null)
{
Log.w(LogTags.MOBILE_MONITOR, "Creating orientationListener in " + this.toString());
orientationEventListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int angle) {
...Do work using getActivity()...
}
};
}
}
@Override
public void onResume() {
super.onResume();
orientationEventListener.enable();
}
@Override
public void onPause() {
super.onPause();
orientationEventListener.disable();
}
Il problema nasce quando passo il frammento durante lo spostamento del dispositivo. Quando provo a chiamare getActivity()
in onOrientationChanged(int angle)
di OrientationEventListener
, la chiamata restituisce null, il che significa che ottengo un'eccezione di puntatore nullo se provo ad usarlo.
Mentre potrei aggiungere un controllo null qui, voglio solo sapere perché sto ottenendo un evento di orientamento quando ho disabilitato chiaramente l'ascoltatore. Se ispeziono il OrientationEventListener
al punto di errore, riporta anche mEnabled=false
. C'è un modo per impedire la propagazione dell'evento al mio ascoltatore?
Ciao Sleeke, hai trovato una soluzione per questo. Sto affrontando lo stesso problema. –