您的位置:首页 > 移动开发 > Android开发

Android实用方法—返回键的监听

2015-06-15 15:14 411 查看
在Android中,如果没对返回键进行监听的话,就会出现只点击一次返回键就直接退出了程序,这样很不人性化, 只要对返回键进行监听,就可以避免这种情况。对返回键的监听结果有两种操作较为常用,一种是按返回键的时候弹出一个dialog,询问使用者是否退出程序;另一种则是双击返回键的时候退出按钮。由于弹出dialog会给使用者带来较为麻烦的操作,所以这种做法在安卓中已经慢慢被淘汰了。

第一种做法,就是对返回键监听,弹出一个对话框,代码如下:

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;
}
}
};


这样就能实现对返回键进行监听,按返回键的时候弹出一个dialog,dialog里面有个确定跟取消按钮,按相应的按钮,执行退出程序或消除对话框的操作,只要在主的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,提示“再按一次退出程序”, 然后启动定时器,如果2秒内没再次按下返回键的时候,就取消准备退出这个任务,如果在2秒内再次按下返回键,则执行System.exit(0)即退出程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: