gpt4 book ai didi

android - 在 Android 4.1.x 上取消 ActionBar 溢出菜单时发出警告

转载 作者:IT老高 更新时间:2023-10-28 23:12:23 25 4
gpt4 key购买 nike

这是我收到的警告:

03-02 14:38:43.980:W/InputEventReceiver(3961):尝试完成输入事件,但输入事件接收器已被释放。

我的菜单是从常规的 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::dispose()。

然后 ViewPostImeInputStage 调用 WindowInputEventReceiver::finishInputEvent 来完成那个 ACTION_DOWN 事件。但是 WindowInputEventReceiver 实例已经被释放,所以它会抛出警告消息。

你可以通过断点调试它。打开InputEventReceiver.java(需要android源码在framework/base/)并在dispose方法处设置断点。

关于android - 在 Android 4.1.x 上取消 ActionBar 溢出菜单时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com