ブラックベリーストームタッチイベント
-
21-08-2019 - |
質問
アイブ氏は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のツアーのようなトラックボールデバイスは、まだあなたのアプリケーションを使用することができるようになります。
他のヒント
あなたは4.6のデバイス上でトラックボールをクリックした場合と同様のコンテキストメニューを、トリガされます。
あなたがでタッチイベントをオーバーロードされたフィールドに次のような何かをする必要があります。
protected boolean navigationClick(int status, int time) { return true; }