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

来源:互联网 发布:惠州综合网络问政平台 编辑:程序博客网 时间:2024/06/05 11:03

注:http://www.voidcn.com/blog/az313/article/p-214842.html

当你的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;      }  });
0 0
原创粉丝点击