安卓监听返回键,提示用户退出

来源:互联网 发布:手机暗黑类游戏 知乎 编辑:程序博客网 时间:2024/06/06 09:53

为了避免用户误操作,添加这么一个提示的功能。

一般通过Toast和弹出对话框的方式提示,

第一种:通过Toast

1.重写onKeyDown方法

long waitTime = 2000;  long touchTime = 0;    @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {      if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {          long currentTime = System.currentTimeMillis();          if((currentTime-touchTime)>=waitTime) {              Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();              touchTime = currentTime;          }else {              finish();          }          return true;      }      return super.onKeyDown(keyCode, event);  }  
2.重写onBackPressed方法

long waitTime = 2000;  long touchTime = 0;    @Override  public void onBackPressed() {      long currentTime = System.currentTimeMillis();      if((currentTime-touchTime)>=waitTime) {          Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();          touchTime = currentTime;      }else {          finish();      }  }  

需要注意的是:系统先是onKeyDown,如果return true了,就不会onBackPressed了。

第二种:通过弹出对话框的方式

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubswitch (keyCode) {case KeyEvent.KEYCODE_BACK:AlertDialog.Builder build=new AlertDialog.Builder(this);build.setTitle("注意").setMessage("确定要退出吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubfinish();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).show();break;default:break;}return false;//return super.onKeyDown(keyCode, event);}


原创粉丝点击