web-dev-qa-db-fra.com

Différence entre les méthodes onKey (), OnKeyDown () et dispatchKeyEvent () fournies par Android?

Quelle est la différence entre les méthodes onKey (), OnKeyDown () et dispatchKeyEvent () fournies par Android?
J'aimerais savoir quand et où chacun d'entre eux peut être utilisé.
S'il vous plaît éclaircir un peu la question.

31
Sen

Traçage du code source de la source 5.1 pour la classe de vues . Il semblerait que dispatchKeyEvent() soit la première méthode appelée par le système. La surcharge empêchera l'appel de tous les événements clés à moins que la version de base ne soit appelée.

Le premier mouvement de dispatchKeyEvent() consiste à tenter de transmettre l'événement à un onKeyListener s'il en existe un. C'est à ce moment que onKey() est appelé. Si l'implémentation onKey() renvoie true, dispatchKeyEvent() y retournera et aucun autre événement ne sera appelé.

S'il n'y a pas de variable onKeyListener ou si la méthode onKey() de onKeyListener a retourné false, dispatchKeyEvent() appellera alors la méthode KeyEvent's dispatch() . Ce qui appellera à son tour toutes les méthodes de l'interface KeyEvent.Callback de votre vue. Ceci inclut onKeyDown() et onKeyUp() .

47
Fr33dan

DispatchKeyEvent Les événements de clé matérielle sont toujours transmis à la vue actuellement active. Ils sont envoyés en partant du haut de la hiérarchie de la vue, puis en descendant jusqu'à la destination appropriée. Si votre vue (ou un enfant de votre vue) a actuellement le focus, vous pouvez voir l'événement voyager via la méthode dispatchKeyEvent (). En bref, dispatchKeyEvent () ne sera appelé que si TextView/EditText est actif.

onKeyDown Appelé lorsqu'une touche est enfoncée et n'est gérée par aucune des vues à l'intérieur de l'activité

0
Pawan Maheshwari