質問

アイブ氏は4.7.0に嵐にブラックベリー4.6.0アプリケーションを移植され。 すべてが離れて私がコントロールしようとしているのタッチイベントから正常に動作しています。 この方法で私のトラップタッチイベントは、その下にそのようになってんが、問題があります タッチイベントでの私のロジックの後に実行して、メニューを返す(thatsのは、メニューボタンを介して起動)は常に表示されます。 私は、偽の真とsuper.touchEvent(メッセージ)を返す試みたが、それはまだ表示されます。

私はタッチイベントをトラップした後に表示されてからメニューを防ぐことができる方法の任意のアイデア?

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

あなたの考えははるかに高く評価されている。

役に立ちましたか?

解決

ただ、haagmmの答えを明確にする:

TouchEvent.CLICKがアプリケーションに送信された後、

、navigationClickイベントも送信されます。これは、互換性の理由で、そうButtonFieldsのようなものは、アプリが明示的touchEventsに対応するために書かれていない場合でも、タッチスクリーンデバイス上で動作します。

navigationClickイベントがあなたのアプリケーションのフィールドで(trueを返す)が消費されていない場合は、

、コンテキストメニューが表示されます。

ボタンフィールドをクリックしたときに、この動作を見ている場合は、

、説明はデフォルトで、ButtonFieldsがイベントをクリックし消費しないということです。私はいつも次のスタイルビットでButtonFieldsを構築することをお勧めであることを発見した設定します。

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

haagmmのコードは、1つのソリューションですが、良いアイデアは、あなたのTouchEvent.CLICK処理コードをコピーしてもnavigationClick方法でそれを貼り付けることです。こうすることで、BlackBerryのツアーのようなトラックボールデバイスは、まだあなたのアプリケーションを使用することができるようになります。

他のヒント

あなたが画面「をクリック」またはSIMでマウスを左クリックしている場合は、

あなたは4.6のデバイス上でトラックボールをクリックした場合と同様のコンテキストメニューを、トリガされます。

あなたがでタッチイベントをオーバーロードされたフィールドに次のような何かをする必要があります。

 protected boolean navigationClick(int status, int time) { return true; }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top