个人觉得当用户按下后退键时,出现"再按一次退出"的提示防止误操作比弹出一个对话框是会更人性化的。话不多说上代码:

第一种:重写onKeyDown来监听:



1.        long waitTime = 2000;  
2. long touchTime = 0;  
3.   
4. @Override  
5. public boolean onKeyDown(int keyCode, KeyEvent event) {  
6. if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {  
7. long currentTime = System.currentTimeMillis();  
8. if((currentTime-touchTime)>=waitTime) {  
9. this, "再按一次退出", Toast.LENGTH_SHORT).show();  
10.             touchTime = currentTime;  
11. else {  
12.             finish();  
13.         }  
14. return true;  
15.     }  
16. return super.onKeyDown(keyCode, event);  
17. }




 

第二种是重写onBackPressed方法直接监听返回键:

 



 

1.          
2. long waitTime = 2000;  
3. long touchTime = 0;  
4.   
5. @Override  
6. public void onBackPressed() {  
7. long currentTime = System.currentTimeMillis();  
8. if((currentTime-touchTime)>=waitTime) {  
9. this, "再按一次退出", Toast.LENGTH_SHORT).show();  
10.         touchTime = currentTime;  
11. else {  
12.         finish();  
13.     }  
14. }


 

实现代码是一样的只是重写的方法不同罢了。

 

如果你需要同时重写这两个方法,可能要注意一些问题啦!系统先是onKeyDown,如果return true了,就不会onBackPressed啦!


好了,今天和大家分享了一个简单而又实用的功能。谢谢大家。


 

个人觉得当用户按下后退键时,出现"再按一次退出"的提示防止误操作比弹出一个对话框是会更人性化的。话不多说上代码:

第一种:重写onKeyDown来监听:



1.        long waitTime = 2000;  
2. long touchTime = 0;  
3.   
4. @Override  
5. public boolean onKeyDown(int keyCode, KeyEvent event) {  
6. if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {  
7. long currentTime = System.currentTimeMillis();  
8. if((currentTime-touchTime)>=waitTime) {  
9. this, "再按一次退出", Toast.LENGTH_SHORT).show();  
10.             touchTime = currentTime;  
11. else {  
12.             finish();  
13.         }  
14. return true;  
15.     }  
16. return super.onKeyDown(keyCode, event);  
17. }



 

第二种是重写onBackPressed方法直接监听返回键:

 



1.          
2. long waitTime = 2000;  
3. long touchTime = 0;  
4.   
5. @Override  
6. public void onBackPressed() {  
7. long currentTime = System.currentTimeMillis();  
8. if((currentTime-touchTime)>=waitTime) {  
9. this, "再按一次退出", Toast.LENGTH_SHORT).show();  
10.         touchTime = currentTime;  
11. else {  
12.         finish();  
13.     }  
14. }


 

实现代码是一样的只是重写的方法不同罢了。

 

如果你需要同时重写这两个方法,可能要注意一些问题啦!系统先是onKeyDown,如果return true了,就不会onBackPressed啦!


好了,今天和大家分享了一个简单而又实用的功能。谢谢大家。