在Android中,如果不按返回键,只需按一下返回键,程序就会直接退出,这是非常不人性化的。 只要按一下返回键,就可以避免这种情况。 窃听返回键常用的操作有两种。 一是按返回键时弹出对话框,询问用户是否退出程序; 另一种是双击返回键退出按钮。 由于弹出对话框会给用户带来比较麻烦的操作,因此这些方式在Android中已经逐渐被淘汰。
第一种方法是监听回车键,会弹出一个对话框。 代码如下:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK )
{
// 创建退出对话框
AlertDialog isExit = new AlertDialog.Builder(this).create();
// 设置对话框标题
isExit.setTitle("温馨提示");
// 设置对话框消息
isExit.setMessage("确定要退出吗?");
// 添加选择按钮并注册监听
isExit.setButton("确定", listener);
isExit.setButton2("取消", listener);
// 显示对话框
isExit.show();
}
return false;
}
/**监听对话框里面的button点击事件*/
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序
finish();
break;
case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框
break;
default:
break;
}
}
};
这样就可以窃听返回键。 当按下返回键时,会弹出一个对话框。 对话框上有确认和取消按钮。 按相应按钮执行退出程序或移除对话框的操作,只要添加到主Activity中即可。 这段代码可以实现这个功能。
第二种方法是监听回车键,双击回车键退出程序。 代码如下:
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
moveTaskToBack(false);
exitBy2Click(); //调用双击退出函数
}
return false;
}
/**
* 双击退出函数
*/
private static Boolean isExit = false;
private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true; // 准备退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
} else {
finish();
System.exit(0);
}
}
窃听返回键。 当按下返回键时,将执行 exitBy2Click() 函数。 使用计时器来窃听两次返回键。 第一次按下返回键时,会弹出一个Toast。 提示“再按一次退出程序”html5 返回键html5 返回键,然后启动定时器。 如果2秒内没有再次按下返回键,则退出任务的计划将被取消。 如果在 2 秒内再次按下返回键,System. exit(0) 退出程序。