2009-05-12 5 views
3

IveはBlackberry 4.6.0アプリケーションを4.7.0の嵐に移植しました。 私がコントロールしようとしているタッチイベント以外は、すべて正常に動作しています。 私はタッチイベントをトラップしますが、問題は です。これは、touchEventのロジックが実行され、メニューを返すと(メニューボタンを介してアクティブ化された)常に表示されます。 false、true、super.touchEvent(メッセージ)が返されましたが、それでも表示されます。Blackberry storm touchEvents

タッチイベントをトラップした後にメニューが表示されないようにする方法はありますか?あなたは4.6上でトラックボールをクリックした場合は、に似たコンテキストメニューをトリガします画面「をクリックする」またはSIMでマウスを左クリックしている場合、あなたの考えは非常に

答えて

6

navigationClickイベントも送信されます。これは互換性のためです。そのため、TouchEventsに応答するよう明示的に書かれていなくても、ButtonFieldsのようなものはタッチスクリーンデバイスで動作します。

アプリ内のフィールドでnavigationClickイベントが使用されない(trueを返す)場合は、コンテキストメニューが表示されます。

ボタンフィールドをクリックしたときにこのような現象が発生する場合は、デフォルトでButtonFieldsはクリックイベントを消費しないという説明があります。

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

haagmmのコードが一つの解決策ですが、良いアイデアがあなたのTouchEvent.CLICK処理コードをコピーしても、それを貼り付けることである:私は常にセット次のスタイルビットでButtonFieldsを構築することをお勧めであることを見出しましたnavigationClickメソッドそうすれば、BlackBerry Tourのようなトラックボールデバイスはあなたのアプリケーションを使用することができます。

3

を高く評価している

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

デバイス。

あなたがにあなたがタッチイベントを過負荷状態フィールドに次のような何かをする必要があります:TouchEvent.CLICKがアプリケーションに送信された後、

:ちょうどhaagmmの答えを明確にする

protected boolean navigationClick(int status, int time) { return true; } 
関連する問題