0

问题很简单:

如何捕捉从 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;博士模式:我希望菜单按钮关闭或显示弹出窗口。

4

1 回答 1

2

您无法在 PopupWindow 及其扩展程序中捕获菜单事件。

但是,您可以在启动弹出窗口的 Activity 中捕获菜单事件,然后将其分派到弹出窗口。

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

    return super.onKeyDown(keyCode, event);
}
于 2012-05-24T12:58:19.983 回答