Frage

Ive portierte eine Blackberry 4.6.0 Anwendung über den Sturm auf 4.7.0. Alle adaequat abgesehen von den Touch-Ereignisse i zu steuern bin versucht zu. Ich Trap Touch-Ereignisse in dem Verfahren, unter dem seine nicht wie angenommen, aber das Problem ist, nach meiner Logik in der Touch ausführt und senden Sie das Menü (das ist über Menü-Taste aktiviert) wird immer angezeigt. Ich habe versucht, Rückkehr falsch, wahr und super.touchEvent (Meldung), aber es scheint immer noch.

Irgendwelche Ideen, wie ich das Menü erscheinen nach Einfangen Berührungsereignis verhindern kann?

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

Ihre Gedanken sind sehr geschätzt

War es hilfreich?

Lösung

Just haagmm Antwort zu klären:

Nach einer TouchEvent.CLICK an Ihre Anwendung gesendet wurde, eine navigationClick Veranstaltung wird auch gesendet werden. Dies ist aus Gründen der Kompatibilität, so Dinge wie ButtonFields auf einem Touchscreen-Gerät arbeiten, auch wenn die App nicht explizit auf touchEvents reagieren geschrieben.

Wenn ein navigationClick Ereignis nicht verbraucht wird (true zurück) durch ein Feld in Ihrer Anwendung, wird das Kontextmenü angezeigt werden.

Wenn Sie dieses Verhalten sind zu sehen, wenn sie auf einem Tastenfeld klicken, ist die Erklärung, dass standardmäßig ButtonFields nicht verbrauchen Ereignisse klicken. Ich habe festgestellt, dass es gute Praxis ist, immer zu konstruieren ButtonFields mit den folgenden Stil-Bits gesetzt:

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

haagmm Code ist eine Lösung, aber eine bessere Idee ist, Ihren TouchEvent.CLICK Handhabung Code zu kopieren und auch in der navigationClick Methode einfügen. Auf diese Weise wird ein Trackball-Gerät wie die Blackberry Tour noch in der Lage sein, Ihre Anwendung zu nutzen.

Andere Tipps

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

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

 protected boolean navigationClick(int status, int time) { return true; }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top