0

ユーザーがメニューボタンを押したときにコンテキストメニューを表示したい。次のコードスニペットを見つけて使用しました。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
  if((keyCode == KeyEvent.KEYCODE_MENU) && event.getRepeatCount() == 0)
  {
    ImageView v = (ImageView)findViewById(IMAGE_ID);
    Log.v("me", "menu " + v.toString());
    openContextMenu(v);
  }
  return true; // return false; doesn't work either
}

もちろん、ビューはコンテキストメニューに登録されており、長時間タッチしても問題なく機能します。問題は、上記のコードが時々しか機能しないことです。つまり、メニューボタンを押すとログメッセージが常に表示されますが、ごくまれにコンテキストメニューが表示されます。okと表示される唯一のケースは、アプリケーションの開始直後です。言い換えれば、最初の試みだけが成功し、他のすべての試みは時折機能しますが、ほとんどは機能しません。ビューは変更されず、常に検出されます。そうしないと、ログ行でこのような問題や例外が発生する可能性があります。

4

1 に答える 1

0

onCreateContextMenuコンテキストメニューが時々表示されないバグがあったことが判明しました。実際、メニューにはアイテムが表示されておらず、Androidのコアでは設計上空のメニューがスキップされています。これで、期待どおりに機能します。

于 2013-09-15T21:17:24.497 に答える