在activitygroup中直接监听onkeydown事件是不行的,可以尝试用
@Override public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub if(event.getKeyCode()==KeyEvent.KEYCODE_BACK) { Builder builder=new AlertDialog.Builder(this); builder.setTitle("提示").setMessage("确定要退出吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub MainTabActivity.this.finish(); } }) .setNegativeButton("取消",null).create().show(); //return false; } //else return super.dispatchKeyEvent(event); }
但如上代码会触发两次对话框的弹出,这是因为当松开按键,此时会再次触发该事件,但不同的是该evetnt中的action为up上次为down所以根据这个判断只要修改为
event.getKeyCode()==KeyEvent.KEYCODE_BACK&& event.getAction()==KeyEvent.ACTION_DOWN
就可以了