アプリのアクティビティにコンテキスト メニューがあります。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_main_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
contextMenuOpened = false;
switch (item.getItemId()) {
case R.id.get_image_from_gallery:
startGalleryPicker();
break;
case R.id.get_image_from_camera:
startCamera();
break;
case R.id.cancel:
break;
default:
return super.onContextItemSelected(item);
}
return super.onContextItemSelected(item);
}
問題は、このコンテキスト メニューを開くと、アクティビティで backpressed-key イベントをキャッチできないことです。メソッドをオーバーライドする場合、dispatchKeyEvent(KeyEvent event)、onKeyDown(int keyCode、KeyEvent event)、onBackPressed() のログが空です。
アクティビティには、「コンテキスト メニューが閉じられました」というイベントのコールバックがあることを知っています - onContextMenuClosed(Menu menu)が、バックプレスキー イベント自体を処理し、コンテキスト メニューが開かれた瞬間にそれを行う必要があります。どうすればいいですか?