Estoy tratando de detectar un evento fling en una aplicación simple de Android, pero el primer argumento MotionEvent
es siempre nulo. ¿Por qué se llama al método onFling con un argumento nulo? El Android documentation dice que se llama cuando se produce un evento fling con el MotionEvent inicial y posterior y el evento MotionEvent correspondiente.Android SimpleOnGestureListener.onFling obteniendo un evento nulo MotionEvent
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// e1 always == null, return early a null reference exception
if (e1 == null) {
return false;
}
if (e1.getY() - e2.getY() > 120) {
handleFlingEvent();
return true;
}
return false;
}
}
La actividad principal de este método tiene onTouchEvent:
GestureDetector flingDetector = new GestureDetector(new MyGestureDetector());
@Override
public boolean onTouchEvent(MotionEvent event) {
if (flingDetector.onTouchEvent(event)) {
return true;
}
return super.onTouchEvent(event);
}
Lo conseguí para trabajar, pero nunca pude determinar qué finalmente lo hizo.Su solución se aplica en mi caso, así que acepté su respuesta. Me gustaría saber por qué no funcionó. – mcrumley
Yo también. Me gustaría saber por qué no funcionó tan bien. Espero que alguien responda eso. –
¿Has tenido algo de suerte rastreando la causa de esto? Estoy sufriendo el mismo problema pero parece que no funciona, incluso con el método onFling en la actividad principal. –