如何取消Android 4.1.x上的ActionBar溢出菜单时出现警告?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (7)

这是我得到的警告:

03-02 14:38:43.980: W/InputEventReceiver(3961): Attempted to finish an input event but the input event receiver has already been disposed.

我拥有的菜单是从普通res/menu/activity_menu.xml文件生成的。我在http://developer.android.com/guide/topics/ui/menus.html#options-menu上详细处理事件。

提问于
用户回答回答于

这与你的工作无关。

溢出菜单由PopupWindow实现。当用户触摸关闭PopupWindow时,ACTION_DOWN事件排队等待应用程序的消息队列。然后它通过ViewPostImeInputStage类传递给View,最后ViewPostImeInputStage将此输入事件发送到PopupWindow的onTouchEvent侦听器:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        final int x = (int) event.getX();
        final int y = (int) event.getY();

        if ((event.getAction() == MotionEvent.ACTION_DOWN)
                && ((x < 0) || (x >= getWidth()) || (y < 0) || (y >= getHeight()))) {
            dismiss();
            return true;
        } else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
            dismiss();
            return true;
        } else {
            return super.onTouchEvent(event);
        }
    }

dissmiss()尝试关闭PopupWindow和PopupWindow :: onDetachedWindow,首先调​​用WindowInputEventReceiver ::

扫码关注云+社区