2009-05-12 15 views
3

Ive a porté une application Blackberry 4.6.0 à la tempête sur 4.7.0. Tout fonctionne bien en dehors des événements tactiles que j'essaie de contrôler. Je piéger les événements tactiles dans la méthode ci-dessous qui fait comme il est censé, mais le problème est après que ma logique dans le touchEvent s'exécute et retourner le Menu (thats activé via le bouton de menu) est toujours affiché. J'ai essayé de retourner false, true et super.touchEvent (message) mais il apparaît toujours.Blackberry storm touchEvents

Des idées sur la façon dont je peux empêcher le menu d'apparaître après le piégeage d'un événement tactile?

protected boolean touchEvent(TouchEvent message) 
{ 
    if (message.getEvent() == TouchEvent.CLICK) 
    { 
     //My code here 
    } 
} 

Vos pensées sont très appréciés

Répondre

6

Juste pour clarifier la réponse de haagmm:

Après une TouchEvent.CLICK a été envoyé à votre application, un événement navigationClick sera également envoyé. C'est pour des raisons de compatibilité, ainsi des choses comme ButtonFields fonctionneront sur un appareil à écran tactile même si l'application n'a pas été explicitement écrite pour répondre à touchEvents.

Si un événement navigationClick n'est pas consommé (renvoyer true) par un champ de votre application, le menu contextuel s'affiche.

Si vous voyez ce comportement lorsque vous cliquez sur un champ de bouton, l'explication est que, par défaut, ButtonFields ne consomme pas d'événements de clic. J'ai trouvé qui est une bonne pratique de construire toujours ButtonFields avec les bits de style suivants sont définis: le code de

ButtonField myButtonField = 
    new ButtonField(ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY); 

haagmm est une solution, mais une meilleure idée est de copier votre code de gestion de TouchEvent.CLICK coller aussi dans la méthode navigationClick. De cette façon, un appareil de trackball comme le BlackBerry Tour pourra toujours utiliser votre application.

3

Si vous êtes « en cliquant sur » l'écran ou un clic gauche de la souris sur la carte SIM, vous déclencherez le menu contextuel, semblable à si vous avez cliqué sur la boule de commande sur un 4.6 dispositif.

Vous aurez besoin de faire quelque chose de semblable à cela sur le champ surchargé TouchEvent dans:

protected boolean navigationClick(int status, int time) { return true; }