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

android tabActivity中 onKeyDown无效解决 退出功能

2014-10-15 14:30 375 查看
private long exitTime = 0;

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

//Alert.show("dd");

if (keyCode == KeyEvent.KEYCODE_BACK

&& event.getAction() == KeyEvent.ACTION_DOWN) {

if ((System.currentTimeMillis() - exitTime) > 5000) {

Toast.makeText(getApplicationContext(), "再按一次将退出",

Toast.LENGTH_SHORT).show();

exitTime = System.currentTimeMillis();

} else {

//System.exit(0);

int nPid = android.os.Process.myPid();

android.os.Process.killProcess(nPid);

}

return true;

}

return super.onKeyDown(keyCode, event);

}

一般程序继承Activity onKeyDown 来监听退出事件,但是tabActivity并不能这样,因为它的onKeyDown事件被他的子Activity (有tab嘛)覆盖了,那么问题来了,我总不能在每个Activity写个退出事件把,所以 我们可以用dispatchKeyEvent(KeyEvent event) 方法来监听退出事件

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次将退出",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
//System.exit(0);
int nPid = android.os.Process.myPid();
android.os.Process.killProcess(nPid);
}
return true;//;//true时该事件将不会继续往下传递,false时反之
}
return super.dispatchKeyEvent(event);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: