L'événement n'est pas livré à l'auditeur
J'ai un jeu libgdx qui utilise scene2d
pour l'INTERFACE utilisateur. J'ai plusieurs ImageButton
instances avec ses propres ClickListener
. Sur certains appareils (seulement vu sur le Samsung Galaxy S3 et Samsung Galaxy S4 Active jusqu'à présent) il y a un problème avec l'événement de la non-livraison, sauf si on clique deux fois rapidement.
Chaque fois qu'un clic échoue quelque chose de semblable au suivant est enregistré:
04-22 16:10:09.678: D/InputReader(728): Input event: value=1 when=20897610551000
04-22 16:10:09.678: I/InputReader(728): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.889 ] when=20897610612000
04-22 16:10:09.678: I/InputDispatcher(728): Delivering touch to: action: 0x0
04-22 16:10:09.678: I/InputDispatcher(728): Delivering touch to: action: 0x3
04-22 16:10:09.688: W/InputEventReceiver(728): Attempted to finish an input event but the input event receiver has already been disposed.
04-22 16:10:09.688: W/InputEventReceiver(728): Attempted to finish an input event but the input event receiver has already been disposed.
04-22 16:10:09.688: V/WindowManager(728): Window{43478730 u0 Keyguard}mOrientationRequetedFromKeyguard=false
04-22 16:10:09.698: D/STATUSBAR-StatusBarManagerService(728): manageDisableList what=0x0 pkg=WindowManager.LayoutParams
04-22 16:10:09.788: D/InputReader(728): Input event: value=0 when=20897720902000
04-22 16:10:09.788: I/InputReader(728): Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=] when=20897720902000
Je suppose que la déclaration Tenté de terminer la saisie de l'événement, mais l'événement d'entrée d'un récepteur a déjà été éliminés. est la clé ici, mais je ne vois pas vraiment pourquoi ça marcherait quand on cliquer une fois de plus rapidement.
Quelle pourrait-être la raison pour cela? Comment puis-je débogage d'aller au fond de tout cela? Toute indices?
Edit: Toutes les lignes du journal, sauf les deux derniers qui s'affiche sur la touche vers le bas, tandis que les deux derniers s'affiche sur la touche up. Mon écouteur d'événement est pour sur cliquez sur.
Vous devez vous connecter pour publier un commentaire.
J'ai découvert ce qu'était la cause du problème. J'ai eu des problèmes avec le bouton de volume bug dans KitKat et a ajouté une variante des solutions de contournement (https://stackoverflow.com/a/21253443/467650, https://plus.google.com/+MichaelLeahy/posts/CqSCP653UrW).
J'ai été en mesure d'obtenir autour de mon "double touch" problème en diminuant le temps de retard avant d'exécuter le gestionnaire qui supprime la barre de navigation, mais qui, de nouveau, n'a pas fonctionné assez bien avec KitKat. Je pourrais, bien sûr vérifier la version Android de l'exécution de l'application, mais que la solution de contournement est vraiment hacky pour commencer je l'ai enlevé tous ensemble.