113 votes

Quelle est la signification de la valeur booléenne renvoyée par une méthode de traitement des événements dans Android ?

Dans Android, la plupart des méthodes d'écoute d'événements renvoient une valeur booléenne. Que signifie cette valeur vrai/faux ? Que va-t-elle donner aux événements suivants ?

class MyTouchListener implements OnTouchListener {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        logView.showEvent(event);
        return true;
    }
}

En ce qui concerne l'exemple ci-dessus, si l'on retourne true dans onTouch j'ai constaté que tous les événements tactiles (DOWN, UP, MOVE, etc.) ont été capturés selon ma méthode logView . Au contraire, si return false, seul l'événement DOWN a été capturé. Il semble donc que le retour false empêchera l'événement de se propager. Ai-je raison ?

En outre, dans un OnGestureListener Dans le cas d'une méthode, de nombreuses méthodes doivent également renvoyer une valeur booléenne. Ont-elles la même signification ?

145voto

adamp Points 19097

Si vous retournez true d'un ACTION_DOWN vous êtes intéressé par le reste des événements de ce geste. Dans ce cas, un "geste" signifie tous les événements jusqu'à l'événement final. ACTION_UP ou ACTION_CANCEL . Retourner à false d'un ACTION_DOWN signifie que vous ne voulez pas de l'événement et que d'autres vues auront l'occasion de le gérer. Si vous avez des vues qui se chevauchent, il peut s'agir d'une vue sœur. Dans le cas contraire, l'événement remontera jusqu'au parent.

25voto

Matthieu Points 8603

Extrait de la documentation : [http://developer.Android.com/reference/Android/view/View.OnTouchListener.html#onTouch(Android.view.View](http://developer.android.com/reference/android/view/View.OnTouchListener.html#onTouch(android.view.View) , Android.view.MotionEvent)

"Vrai si l'auditeur a consommé l'événement, faux sinon."

Si vous renvoyez true, l'événement est traité. S'il est faux, il passe à la couche inférieure suivante.

13voto

Falmarri Points 20281

La valeur booléenne détermine si l'événement est consommé ou non.

Oui, vous avez raison. Si vous retournez false, le prochain listener gère l'événement. S'il retourne true, l'événement est consommé par votre écouteur et n'est pas envoyé à la méthode suivante.

1voto

kamor Points 11

J'ai perdu près d'un jour dans le dépannage, mais j'ai découvert que ma fonction onTouch est appelée 2 fois lorsqu'elle utilise true et 1 fois lorsqu'elle utilise false.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X