ale*_*rin 18 android warnings android-optionsmenu
这是我得到的警告:
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上详细处理事件
当我点击垂直三个点来打开溢出菜单并取消它时,我收到了警告.似乎很少知道如何抓住它的触发器.有任何想法吗?
sky*_*sle 14
这与您的工作无关.
PopupWindow实现了溢出菜单.当用户触摸以关闭PopupWindow时,ACTION_DOWN事件排队到app的Message队列.然后通过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);
}
}
Run Code Online (Sandbox Code Playgroud)
dissmiss()尝试先关闭PopupWindow和PopupWindow :: onDetachedWindow调用WindowInputEventReceiver :: dispose().
然后ViewPostImeInputStage调用WindowInputEventReceiver :: finishInputEvent来完成该ACTION_DOWN事件.但是,WindowInputEventReceiver实例已经被释放,因此它会抛出警告消息.
您可以通过断点进行调试.打开InputEventReceiver.java(在framework/base /上需要android源代码)并在dispose方法中设置断点.
| 归档时间: |
|
| 查看次数: |
12035 次 |
| 最近记录: |