android 当Activity中弹出对话框时,无法监听返回键

在最近的项目开发中,遇到一个问题,当你的Activity 已经显示了Dialog时候.
通过下面的方法都是无法监听到返回键事件的:
1、重写onKeyDown或者onKeyUp方法;
2、重写onBackPressed方法;
3、重写dispatchKeyEvent方法;
因为上述方法是重写在activity里面的,也就是说当activity是当前焦点时,它可以捕捉到相应的back键事件,而有dialog弹出时,dialog获取了当前焦点,所以activity里面的方法无法获取到back键事件。
可以使用下面方法监听:
1、自定义的Dialog,该监听只对返回键有效,当点击Dialog中的按钮dismiss的时候,不会回调;


resultDialog.setOnCancelListener(new OnCancelListener() {

@Override
public void onCancel(DialogInterface dialog) {
System.out.println("dismiss  listener----------");
}
});
2、Dialog中重新下面方法;
public boolean dispatchKeyEvent(KeyEvent event){
        
        switch(event.getKeyCode()){
        case KeyEvent.KEYCODE_BACK:             
System.out.println("dismiss  listener----------");
break; 
default:
  break; 

return super.dispatchKeyEvent(event); 
}
3、设置监听回调;
resultDialog.setOnKeyListener(new OnKeyListener() {
@Override 
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub 
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){
System.out.println("dismiss  listener----------");

return false; 

});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值