美文网首页android开发日常总结
Android DialogFragment关闭状态如何监听?

Android DialogFragment关闭状态如何监听?

作者: aitality | 来源:发表于2019-03-05 17:06 被阅读0次

    DialogFragment大家都不陌生,这也是官方推荐使用的弹框方式,关于这个类的使用也很多,今天就讲一下如何监听的它的关闭状态。在很多情况下,我们都要对用户的行为进行监听,比如在弹框消失的时候刷新页面,这是很常见的需求了,使用Dialog做的话,我们可以使用dialog.setOnDismissListener(DialogInterface.OnDismissListener listener);方式。但是DialogFragment并没有提供这样的方法,我们该怎么办呢?

    Try1.自定义DialogFragment,添加关闭弹框的回调,如下:

    public class TestDialogFragment extends DialogFragment {
      //做一些弹框的初始化,以及创建一个弹框
      public void setOnDismissListener (DialogInterface.OnDismissListener listener) {
        //设置关闭弹框的回调
      }
      
      @Override
      public void onStart(){
        super.onStart();
        getDialog().setOnDismissListener(new DialogInterface.OnDismissListener(){
          void onDismiss(DialogInterface dialog){
             if(listener != null) listener.onDismiss(dialog);
          }
        });
      }
    }
    

    经过测试发现,这种方式大部分情况下都有可以检测的准确,但是如果在点边缘关闭弹框时,监听中跳转到一个新的页面,会发现弹框并没有真的关闭。这个具体原因不详。

    Try2.还是要自定义DialogFragment,添加关闭弹框的回调,如下:

    public class UrgentNoticeDialog extends DialogFragment {
        private DialogInterface.OnDismissListener mOnClickListener;
    
        public void setOnDismissListener(DialogInterface.OnDismissListener listener){
            this.mOnClickListener = listener;
        }
    
        //做一些弹框的初始化,以及创建一个弹框
    
        @Override
        public void onDismiss(DialogInterface dialog) {
            super.onDismiss(dialog);
            if(mOnClickListener != null) {
                mOnClickListener.onDismiss(dialog);
            }
        }
    }
    

    这种方式测试通过,完美解决问题。

    相关文章

      网友评论

        本文标题:Android DialogFragment关闭状态如何监听?

        本文链接:https://www.haomeiwen.com/subject/feyouqtx.html