J'essaie de remplacer la fonctionnalité de la touche arrière. Lorsque l'utilisateur l'appuie une fois, je veux qu'il revenait à l'écran précédent. Cependant, lorsque la touche arrière est pressée à long terme (pour, disons, deux secondes ou plus), je veux quitter l'application.
À présent, j'ai envahi ces deux méthodes de mon activité: P> < PRE> XXX PRE>
mais le rappel sur Onkeylongress CODE> n'est jamais appelé, car l'événement est toujours reçu par la méthode Y a-t-il un moyen de faire fonctionner les deux méthodes? Ou a-t-il d'être fait tout dans le ONKEYDOOD CODE>. P>
ONKEYDOOD code> et utilisez le nombre de répétitions / millisecondes pour la détecter? P> P>
3 Réponses :
La raison pour laquelle Ce que vous devez faire est celui-ci: p> implémente comme ci-dessous et fonctionnera: p> onkeylongress code> n'est jamais appelé, est que vous revenez true dans
onekeydown code> sans raconter le cadre que cela pourrait être une presse longue - faisant l'arrêt du KeyEvent Écoulez à travers les différents gestionnaires d'événements.
event.startracking () code> comme expliqué dans le Documentation . Li>
Onkeylongress Code>. Li>
ol>
Le problème est qu'avant de retourner vrai, je dois faire des choses complètement différentes si l'événement est pour une presse régulière ou une presse longue. Donc, dans tout cas, je dois détecter la presse longue sur la méthode code> oieydown code> avant d'appeler starttracking code>, n'est-ce pas?
J'ai édité les commentaires dans mon code pour montrer ce que je voulais dire. Je veux seulement retourner true dans onekedown code> si la touche est courte. Sinon, propagez au gestionnaire long keypress.
Pourquoi ne pas utiliser OnKeyup () Code> ainsi que
OnKeydown () Code>? Au cours de
OnKeydown () Code> Vous ne savez pas si c'est une presse longue ou non, car cela est appelé dès que la touche est enfoncée et que vous ne savez pas combien de temps l'utilisateur a l'intention de déposer la clé. pour. Comme Kaspermoerch le dit correctement, vous devez appeler
starttracking code> dans votre
oilydown () code> méthode et renvoyer
vrai code>. Puis dans votre
onKeyup () code> Vous pouvez appeler
event.istracking () code> et
événement.longpress () code> pour déterminer s'il faut gérer les choses comme une longue Appuyez sur ou une pression courte. P>
Ne fonctionne pas. ISTRACKING CODE> renvoie true mais
islongress code> renvoie false, malgré le bouton pendant près de 5 secondes. Peut-être que cela ne peut pas être testé sur simulateur?
Je pense que la meilleure façon de gérer est en tant que telle.
Le seul inconvénient que je peux voir ici, est-ce que vous cliquez sur le bouton de menu unique ne fait pas un son au cas où l'utilisateur l'a activé. Il existe peut-être un moyen de vérifier ce paramètre et d'utiliser cela, ou appelez le comportement par défaut. P>
code: p>
Hay Vérifiez ce lien KeyEvent Doc