单击的时候出现对话框,重写activity的按钮监听方法即可。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
getexitdialog().show();
Log.i("111","1111");
}
return true;
}
问题存在于,在显示对话框的时候aitivity的监听是无效的(事件传递到对话框了),所以还得监听对话框的按钮事件。但是首次启动对话框由于传递(已经将返回值改成了true,依然传递了,原因不明)会让对话框也会产生一次监听到返回键的事件,于是加上一个首次进入的标识符。
<strong>对话框源<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">码如下:</span></strong>
private AlertDialog getexitdialog(){
AlertDialog.Builder builder= new AlertDialog.Builder(this);//创建buider
builder.setIcon(R.drawable.suer);//设置图片
builder.setTitle("提示");//设置标题
builder.setCancelable(false);//禁止其他退出方式
builder.setMessage("您真的要退出吗?");//设置信息内容
builder.setOnKeyListener(new DialogInterface.OnKeyListener() {//监听按钮,第一次按返回键将isfirst改为false,第二次退出
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK&&!isfirst){
finish();
}
if(keyCode==KeyEvent.KEYCODE_BACK)isfirst=false;
return true;
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {//取消按钮,点击对话框又点了取消重置isfirst的值
@Override
public void onClick(DialogInterface dialog, int which) {
isfirst=true;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//确定按钮,退出程序
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
return builder.create();
}