Android DialogFragment关闭状态如何监听?
2019-03-05 本文已影响0人
aitality
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);
}
}
}
这种方式测试通过,完美解决问题。