TabActivity中onKeyDown无法响应的解决方法 及 退出应用程序

  Android中某个类继承Activity的子类TabActivity时,重载Activity中的public boolean onKeyDown(int keyCode, KeyEvent event)方法时,点击按键时并得不到响应,解决的方法是:

public boolean dispatchKeyEvent(KeyEvent event) {
        if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){  
             if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { 
                 exit();
              }  
             return true;  
        }  
        return super.dispatchKeyEvent(event);  
    }

 

退出应用程序:

public void exit() {
        new AlertDialog.Builder(this)
            .setTitle("退出")
            .setMessage("确定退出吗?")
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent startMain = new Intent(Intent.ACTION_MAIN);
                startMain.addCategory(Intent.CATEGORY_HOME);
                startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(startMain); 
                System.exit(0); 
            }
            
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                 dialog.cancel();
            }
            
            }).show();
    }

 

 

  Android Home键系统负责监听,捕获后系统自动处理。有时候,系统的处理往往不随我们意,想自己处理点击Home后的事件,那怎么办?

 1、加权限禁止Home键

  <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>

 2、

 

@Override
public void onAttachedToWindow() {
  // TODO Auto-generated method stub
  if (true) {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
  }
   super.onAttachedToWindow();
}

 

 3、

public boolean onKeyDown(int keyCode, KeyEvent event) {
  if(keyCode==KeyEvent.KEYCODE_HOME && event.getRepeatCount()==0){
          return false;      
    }else{
          return super.onKeyDown(keyCode, event);
    }
}

 


 

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值