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

最近在做一个项目,其中用到了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函数,果然如我所料,成功了!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值