焦点在子Activity时ActivityGroup无法显示menu的问题
来源:互联网 发布:黄景瑜是淘宝什么模特 编辑:程序博客网 时间:2024/05/01 14:34
转:
键盘事件只会发送到当前获得焦点的View,这个KeyEvent只能被最上层获得焦点窗口的activity和view得到。一般来说这些事件会从上倒下去寻找合适的接受组件,ViewGroup的一个childView的onKeyDown()方法return true,那么表示该方法消费了此次事件,此时不会再传递到ViewGroup的onKeyDown()方法,如果onKeyDown()方法return false,那么表示该方法并未处理完全,该事件仍然需要以某种方式传递下去继续等待处理,这时传递到ActivityGroup的onKeyDown()方法。但是KeyEvent.KEYCODE_MENU不会传递到ActivityGroup去。
一个ActivityGroup的键盘事件处理
按下按键时执行
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
最后执行ActivityGroup onKeyDown
松开按键时执行
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
最后执行ActivityGroup onKeyDown
如果childView是listView,按上下键选择列表时的事件执行流程
按下键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
松开键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyUp
最后执行ActivityGroup onKeyUp
如果焦点在childView的listView上,按Menu键的事件
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
最后执行childActivity onKeyDown
松开键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyUp
如果焦点在childView的listView上,按Back键的事件
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyDown
最后执行ActivityGroup onKeyDown
Activity.dispatchKeyEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的键盘事件。
由上面可知,当焦点在childView的listView上时,没有执行ActivityGroup onKeyDown,而有执行ActivityGroup的dispatchKeyEvent,因此可以在ActivityGroup的dispatchKeyEvent来捕获childActivity的Menu键事件
键盘事件只会发送到当前获得焦点的View,这个KeyEvent只能被最上层获得焦点窗口的activity和view得到。一般来说这些事件会从上倒下去寻找合适的接受组件,ViewGroup的一个childView的onKeyDown()方法return true,那么表示该方法消费了此次事件,此时不会再传递到ViewGroup的onKeyDown()方法,如果onKeyDown()方法return false,那么表示该方法并未处理完全,该事件仍然需要以某种方式传递下去继续等待处理,这时传递到ActivityGroup的onKeyDown()方法。但是KeyEvent.KEYCODE_MENU不会传递到ActivityGroup去。
一个ActivityGroup的键盘事件处理
按下按键时执行
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
最后执行ActivityGroup onKeyDown
松开按键时执行
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
最后执行ActivityGroup onKeyDown
如果childView是listView,按上下键选择列表时的事件执行流程
按下键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
松开键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyUp
最后执行ActivityGroup onKeyUp
如果焦点在childView的listView上,按Menu键的事件
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
最后执行childActivity onKeyDown
松开键时
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_UP)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyUp
如果焦点在childView的listView上,按Back键的事件
首先执行ActivityGroup dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行ActivityGroup onUserInteraction
然后执行childActivity dispatchKeyEvent (event.getAction()==KeyEvent.ACTION_DOWN)
然后执行childActivity onUserInteraction
然后执行childActivity onKeyDown
最后执行ActivityGroup onKeyDown
Activity.dispatchKeyEvent(MotionEvent) - 这允许你的活动可以在分发给窗口之前捕获所有的键盘事件。
由上面可知,当焦点在childView的listView上时,没有执行ActivityGroup onKeyDown,而有执行ActivityGroup的dispatchKeyEvent,因此可以在ActivityGroup的dispatchKeyEvent来捕获childActivity的Menu键事件
- 焦点在子Activity时ActivityGroup无法显示menu的问题
- 焦点在子Activity时ActivityGroup无法显示menu的问题
- 焦点在子Activity的listView时ActivityGroup无法响应Menu键的问题
- 焦点在子Activity的listView时ActivityGroup无法响应Menu键的问题
- 在ActivityGroup时,调用对应activity的menu。
- 使用ActivityGroup 时子选项卡activity里的EditText只能输入无法删除问题
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- 使用ActivityGroup时,如何保存Activity状态、如何使用子Activity的Menu?
- ActivityGroup子Activity获得焦点返回键的处理
- ActivityGroup子Activity获得焦点返回键的处理
- 使用ActivityGroup时,在Activity中显示对话框出现的问题
- 使用ActivityGroup时,在Activity中显示对话框出现的问题
- 在ActivityGroup时,调用对应的menu。
- 在ActivityGroup时,调用对应的menu。
- 适配器模式(Adapter Pattern)
- 10905 - Children's Game----需要考虑全面!(使用简单方法!!!!)
- 非分区表与分区表相互转换
- 学习笔记:简单验证码
- Visual studio 中使用ZenCoding
- 焦点在子Activity时ActivityGroup无法显示menu的问题
- 代码大全读书笔记(二)
- 山区行
- 每天一个设计模式之composite
- 集合
- qemu针对设备加snapshot
- 面试训练打印数组
- 代码大全读书笔记(三)
- OOP