DialogFragment设置不可取消
原先在Activity显示Dialog,直接设置就可以了。如下所示:
alertDialog.setCancelable(false);
alertDialog.setCanceledOnTouchOutside(false);
但是切换到DialogFragment却不行,需要添加如下方法。
public class LoadingDialogFragment extends DialogFragment {
static final String KEY_DIMABLE = "dimable";
static final String KEY_MSG = "msg";
public static LoadingDialogFragment newInstance(boolean dimable, String msg) {
LoadingDialogFragment f = new LoadingDialogFragment();
Bundle args = new Bundle();
args.putString(KEY_MSG, msg);
args.putBoolean(KEY_DIMABLE, dimable);
f.setArguments(args);
f.setCancelable(dimable);
return f;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
boolean dimable = getArguments().getBoolean(KEY_DIMABLE, false);
String msg = getArguments().getString(KEY_MSG);
Dialog dialog = new Dialog(getActivity(), R.style.LoadingDialog);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(dimable);
return dialog;
}
}
需要对fragment同样设置cancelable,f.setCancelable(dimable);
即可。