2009-05-12 8 views
3

Ich habe eine Blackberry 4.6.0-Anwendung über den Sturm auf 4.7.0 portiert. Alles funktioniert gut abgesehen von den Touch-Events, die ich kontrollieren will. Ich berühre Berührungsereignisse in der Methode unten, die tut, wie es sein soll, aber das Problem ist , nachdem meine Logik im touchEvent ausgeführt wird und das Menü zurückgibt (thats, das über Menüknopf aktiviert wird) wird immer angezeigt. Ich habe versucht, falsch, wahr und super.touchEvent (Nachricht) zurückgeben, aber es erscheint immer noch.Blackberry storm touchEvents

Haben Sie Ideen, wie ich verhindern kann, dass das Menü nach dem Überfüllen des Touch-Ereignisses angezeigt wird?

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

Ihre Gedanken sind sehr geschätzt

Antwort

6

Gerade haagmm Antwort zu klären Ein navigationClick-Ereignis wird ebenfalls gesendet. Dies geschieht aus Kompatibilitätsgründen, so dass Dinge wie ButtonFields auch dann auf einem Touchscreen-Gerät funktionieren, wenn die App nicht explizit auf touchEvents reagiert hat.

Wenn ein navigationClick-Ereignis nicht von einem Feld in Ihrer App verbraucht wird (true), wird das Kontextmenü angezeigt.

Wenn Sie dieses Verhalten beim Klicken auf ein Schaltflächenfeld sehen, lautet die Erklärung, dass ButtonFields standardmäßig keine Klickereignisse verwenden. Ich habe festgestellt, dass es gute Praxis ist festgelegt ButtonFields mit dem folgenden Stil Bits immer zu konstruieren:

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

haagmm Code ist eine Lösung, aber eine bessere Idee ist Ihren TouchEvent.CLICK Behandlungs-Code kopieren und es auch in die navigationClick-Methode. Auf diese Weise kann ein Trackball-Gerät wie die BlackBerry Tour Ihre Anwendung weiterhin verwenden.

3

Wenn Sie die Maus in dem sim sind, klicken „Klicken“ auf den Bildschirm oder links sehen Sie das Kontextmenü auslösen, ähnlich wie wenn Sie mit dem Trackball geklickt auf einem 4.6 Gerät.

Sie müssen etwas ähnliches wie dies auf dem Feld tun Sie Touch in überlasteten:

Nach einer TouchEvent.CLICK an Ihre Anwendung gesendet wurde,:

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