最近在做一个项目,其中用到了TabActivity,想截取OnKeyDown事件来提示用户退出程序在api lever 5以上有OnBackPressed重载函数,可以达到同样的效果。
但是我一直没有成功,调试程序发现,因为TabActivity压根没有获取我按后退的事件,根本没有捕获OnKeyDown事件,弄了好久,我的退出提示代码是这样子写的:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new DialogUtil().Exitdialog(HomeActivity.this);
return true;
}
return false;
}
其中new DialogUtil().Exitdialog(HomeActivity.this);是弹出一个提示窗口!代码如下:
public void Exitdialog(Context ctx) {
AlertDialog.Builder builder = new Builder(ctx);
View exitV=LayoutInflater.from(ctx).inflate(R.layout.exitdialog, null);
builder.setView(exitV);//设定对话框显示的View对象
builder.setPositiveButton(R.string.app_exit_ok,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
//AccoutList.this.finish();
//System.exit(1);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
builder.setNegativeButton(R.string.app_exit_cancle,
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
发现在自己的代码也没有写错,开是网上查了好久终于有了点头绪了,解决了!原来是这样子的,我的后退事件被我Tab页的子Activity截取了
于是我在子activity中重载OnKeyDown函数,果然如我所料,成功了!