【问题标题】:android onPrepareOptionsMenu doen't get second press on menu buttonandroid onPrepareOptionsMenu 没有第二次按下菜单按钮
【发布时间】:2013-03-14 16:24:20
【问题描述】:

我注意到在我的活动中实现 onPrepareOptionsMenu() 时 - 第一次按下效果很好 - 来自 onPrepareOptionsMenu() 的回调开始。但是当它仍然可见时(打开一些对话框)并且我希望第二次按下关闭它(触发回调以关闭对话框) - 菜单按钮上的第二次按下不会触发 onPrepareOptionsMenu()。不知道为什么

这就是我的实现方式:

 @Override
public boolean onPrepareOptionsMenu(Menu menu) {

    if (onDoneListener != null) {
        onDoneListener.OnDone();

    }
    return false;
}

编辑1:

我在评论者帮助后添加了下一个功能,但仍然没有运气。 OnKeyDown() 也没有收到下一个菜单按钮按下。看起来菜单按钮在我按下后退按钮之前不会收到事件。代码如下:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        if (onDoneListener != null)
            onDoneListener.onDone();

    }
    return super.onKeyDown(keyCode, event);
}

我也尝试返回真假,但不返回运气。

【问题讨论】:

    标签: android android-actionbar menubar


    【解决方案1】:

    您看到的是OnPrepareOptionsMenu 的确切预期行为。它在显示菜单之前运行,而不是之后。

    【讨论】:

    • 是的,但我返回 false,并且根据文档“您必须返回 true 才能显示菜单;如果返回 false,则不会显示。”所以菜单并没有真正可见
    • eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee?
    • 如果菜单没有加载,那么再次调用这个函数是有意义的。无论如何,您知道每次按下菜单按钮时如何调用回调吗?谢谢
    • 是的:你需要拦截key本身,而不是菜单事件。 Here you have an example
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 2021-01-22
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    相关资源
    最近更新 更多