2

アプリのアクティビティにコンテキスト メニューがあります。

    @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)が、バックプレスキー イベント自体を処理し、コンテキスト メニューが開かれた瞬間にそれを行う必要があります。どうすればいいですか?

4

0 に答える 0