setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
{ if(event.getAction() == KeyEvent.ACTION_UP)
{ if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE))
{ dismiss() ; activity.finish(); }
<pre name="code" class="java">@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.rl_measure:
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
Bundle pBundle = new Bundle();
pBundle.putString("name", "7");
openActivity(HisActivity.class, pBundle);
return true;
}
if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
openActivity(UserActivity.class);
return true;
}
}
if (event.getAction() == KeyEvent.ACTION_UP
&& keyCode == KeyEvent.KEYCODE_DPAD_LEFT
|| keyCode == KeyEvent.KEYCODE_DPAD_UP)
return false;
break;
}
return false;
}
onkey方法的return结果可能为:true和false
区别在于:
return true 由自己处理
return false 由系统处理
笔记:
按某个键会两次触发onkey方法--keyDown和keyUp
此次的处理思路:
键按下时 return true 排除系统干扰
键弹起时 return false 由系统处理--可由系统来响应Enter等事件
备注:
button等可以被触发的控件在获取焦点后,按回车即可由系统调用其注册的onClick事件的相关处理
textview则不能:因其一般情况下用于内容的显示。如果需要其在获取焦点后响应Enter事件需要对其注册onkeyListener事件