Реализация кнопки меню нажатием на расширение класса PopupWindow

Вопрос прост:

Как поймать щелчки на кнопке меню в классе, который выходит из PopupWindow?

Что я делаю сейчас, так это следующее:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_MENU)
    {
        if (ab != null) {
            ab.showActionOverflowMenu();
        }
    }
    return true;
}

ab.showActionOverflowMenu () выполняет следующие действия:

public boolean showActionOverflowMenu() {
    if (actions.size() >= 4) {
        try {
            if (ag.isVisible()) {
                ag.dismiss();
            } else {
                showActionOverflow();
                return true;
            }
        } catch (Exception e) {
            showActionOverflow();
            Log.d("click", "click");
            return true;
        }
    }
    return false;
}

showActionOverflow () просто устанавливает всплывающее окно и прикрепляет его к кнопке.

Режим tl;dr: я хочу, чтобы кнопка меню закрывала или показывала всплывающее окно.

1 ответ

Решение

Вы не можете отловить события меню в PopupWindow и его расширениях.

Однако вы можете перехватить событие меню в Activity, которое запускает всплывающее окно, а затем отправляет его всплывающему окну.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_MENU)
    {
        yourPopupWindow.menuClicked();
    }

    return super.onKeyDown(keyCode, event);
}
Другие вопросы по тегам