3

一部のデバイスで次のシナリオが発生しています。ユーザーがフィールドをクリックして応答を期待すると、そのクリックイベントに適切に応答する代わりに、デバイスの画面の中央下部にコンテキストメニューが表示されます。

NavigationUnclickとtrackwheelUnclick
私が読んだものから、navigationUnclickとtrackwheelUnclickをオーバーライドして、メニューが表示されないようにすることができます。これを画面レベルで行っていますが、中央メニューのシナリオを再現するのは困難です。これは正しいアプローチですか?

なぜこれが起こるのですか?これを解決する方法はありますか?

4

4 に答える 4

6

私は最近これが起こった。私はいくつかの基本的な機能を提供するために拡張MainScreenしていましたが、コンテキストメニューは必要ありませんでした。truenから戻ると、avigationClick()この動作が削除されました。

public class MyScreen extends MainScreen {
    protected boolean navigationClick(int status, int time) {
        /*  
        ... custom behavior ... 
        */
        return true;
        // the following line would trigger the context menu
        //return super.navigationClick(status, time);
    }
}

オーバーライドする必要はまったくありませんでしたnavigationUnclick()。オーバーライドを使用した@JustinDのアプローチとは異なりonMenu()、これはメニューがこの特定のケースから防止されるだけであり、画面全体ではありません(これは、必要な場合があり、おそらくそれを行うためのより良い方法です)。

とにかく、それは最近のクリックとメニューの私の経験です。

于 2009-08-21T18:09:43.703 に答える
1

コードを投稿できますか?Unlickメソッドの代わりにtrackwheelClickとnavigationClickをオーバーライドしてみてください。また、これらのメソッドでtrueを返すようにしてください。

于 2009-08-17T23:36:59.320 に答える
1

onMenuをオーバーライドしてtrueを返すだけの場合(メニューイベントを処理した場合)、メニューは表示されません...フルメニューも必要ないと仮定します-コンテキストメニューではなくフルメニューが必要な場合は、Janと言って、あなたは大丈夫なはずです-必ずtrueを返すようにしてください。そうしないと、イベントがバブルしてメニューが生成されてしまいます

public class MyClass Extends MainScreen
{
   ///
  // Override onMenu to prevent menu from coming up when you click trackwheel 
  public boolean onMenu(int instance)
  {
    return true;
  }
}
于 2009-08-21T17:38:57.977 に答える
0

メイン画面のすべてのフィールドでCONSUME_CLICKスタイルを使用できます...

于 2011-06-01T22:35:26.210 に答える