处理KeyDown和Menu事件所遇到的问题

本文探讨了Android应用中遇到的Menu键事件未响应问题,并通过实例展示了如何修正这一问题。通过对比原始代码与修改后的代码,解释了为何修改后的代码能够解决问题,涉及事件处理机制和Android系统交互的原理。
原来对按键事件处理的程序
1 @Override  
2 public boolean onKeyDown(int keyCode, KeyEvent event) {
3 Intent intent = new Intent();
4 if(keyCode==KeyEvent.KEYCODE_BACK){
5 }
6
7 <span style="color:#ff0000;">return true;</span>
8 }

 

 

理论上来说,点击手机上的Menu键,会出现菜单选项,但是运行始终没有反应,Log日志显示:

11-05 06:56:11.932: W/KeyCharacterMap(1754): No keyboard for id 0
11-05 06:56:11.942: W/KeyCharacterMap(1754): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

后来把代码OnkeyDown改成下面的,就OK了

OnkeyDown修改
@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) {
Intent intent = new Intent();
if(keyCode==KeyEvent.KEYCODE_BACK){
}

<span style="color:#ff0000;">return super.onKeyDown(keyCode, event);</span>
}

这是什么原因呢,我想应该是因为我一开始直接返回了一个true,因为Menu按键事件是属于OnkeyDown事件的,所以方法OnkeyDown事件肯定会优先响应了,因为最后直接返回了一个true给父类,所以默认是对Menu按键事件进行了响应并处理,便不会再去处理onCreateOptionsMenu方法和onOptionsItemSelected方法了;相反,返回的是super.onKeyDown(keyCode, event);因为没有对Menu事件做相应的响应和处理,相当于是返回了一个false,所以就会去执行onCreateOptionsMenu方法和onOptionsItemSelected方法,这两个方法了


原文地址:http://blog.youkuaiyun.com/yyb346275563/article/details/6938525

转载于:https://www.cnblogs.com/java-intern/archive/2011/12/01/2270342.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化并行计算等改进策略。; 适合人群:具备一定Python编程基础优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值