在对话框外按下时如何closuresDialogFragment?

我正在使用一个DialogFragment ,并且当我DialogFragment时已经成功地设置了一个closures(即closures)对话框的图像时,我很难find方法来解除对话框,当用户点击它之外的任何地方,就像它工作与正常的对话框。 我以为会有某种

 dialogFragment.setCanceledOnTouchOutside(true); 

调用,但我没有看到在文档中。

DialogFragment可以吗? 还是我看错了地方? 我尝试拦截“父”活动中的触摸事件,但除了没有发生任何触摸事件外,对我来说这似乎不正确。

 DialogFragment.getDialog().setCanceledOnTouchOutside(true); 

必须在onCreateView中调用(就像Apurv Gupta指出的那样)。

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... getDialog().setCanceledOnTouchOutside(true); ... } 
  /** The system calls this only when creating the layout in a dialog. */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // The only reason you might override this method when using onCreateView() is // to modify any dialog characteristics. For example, the dialog includes a // title by default, but your custom layout might not need it. So here you can // remove the dialog title, but you must call the superclass to get the Dialog. Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setCanceledOnTouchOutside(true); return dialog; } 
 DialogFragment.getDialog().setCanceledOnTouchOutside(false); 

这是mistyping。 我有同样的问题。 这对于Java和Mono for Android Mono会正常工作:

 this.getDialog().SetCanceledOnTouchOutside(false); 

很多的答案在这里,但是,应用程序崩溃时,对话框打开。 写getDialog().setCanceledOnTouchOutside(true);onCreateView没有工作,并崩溃我的应用程序。

(我使用AppCompatActivity作为我的BaseActivity和android.app.DialogFragment作为我的片段)。

有效的是以下两条线之一:

。getDialog()setCanceledOnTouchOutside(真);

要么

。this.getDialog()setCanceledOnTouchOutside(真);

里面的onActivityCreated就像

 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimationZoom; //getDialog().getWindow().setDimAmount(0.85f); getDialog().setCanceledOnTouchOutside(true);//See here is the code } 

什么不用:

。DialogFragment.getDialog()setCanceledOnTouchOutside(假);

抛出以下错误

在这里输入图像说明

onCreateView编写代码会崩溃应用程序! 如果您发现错误,请更新答案。

我build议只有在尝试使用上述解决scheme后才能使用我的解决scheme。 我在这里描述了我的解决scheme。 简单来说,我正在检查DialogFragment.getView()的触摸边界。 当触摸点位于DialogFragment之外时,我正在closures对话框。

  Dialog.SetCanceledOnTouchOutside(true); 

为我工作
我的代码

 class dlgRegister : DialogFragment { public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { .... .... } public override void OnActivityCreated(Bundle savedInstanceState) { Dialog.Window.RequestFeature(WindowFeatures.NoTitle); Dialog.SetCanceledOnTouchOutside(true); base.OnActivityCreated(savedInstanceState); Dialog.Window.Attributes.WindowAnimations = Resource.Style.dialog_animation; } }