`
yidongkaifa
  • 浏览: 4059723 次
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics