普通Activity的实现方法是重写onKeyDown方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
if(System.currentTimeMillis() - exitTime > 2000){
Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
return false;
}
else{
finish();
}
}
return super.onKeyDown(keyCode, event);
}
而在一个存在TabHost的activity中,这个解决方法未能达到目的,具体该怎么做?
通过重写dispatchKeyEvent实现。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
Log.d("back",exitTime+"");
if(System.currentTimeMillis() - exitTime > 2000){
Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
return false;
}
else{
finish();
}
}
return true;
}
return super.dispatchKeyEvent(event);
}