Android中在有TabHost情况下,OnKeyDown不能后退的解决办法

来源:互联网 发布:完美形态知乎 编辑:程序博客网 时间:2024/05/04 23:39

最近在做一个项目,其中用到了TabActivity,想截取OnKeyDown事件来提示用户退出程序在api lever 5以上有OnBackPressed重载函数,可以达到同样的效果。

但是我一直没有成功,调试程序发现,因为TabActivity压根没有获取我按后退的事件,根本没有捕获OnKeyDown事件,弄了好久,我的退出提示代码是这样子写的:

@Overridepublic 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函数,果然如我所料,成功了!

注本文部分内容转载自http://www.eoeandroid.com/thread-83202-1-1.html

 

原创粉丝点击