Android DialogFragment关闭状态如何监听?

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关闭状态如何监听?)