Wie kann man ein DialogFragment beim Drücken außerhalb des Dialogs entlassen?

Ich benutze ein DialogFragment , und während ich erfolgreich ein Bild gesetzt habe, um den Dialog zu schließen (dh zu entlassen), wenn gedrückt, habe ich eine harte Zeit, den Weg zu finden, den Dialog zu entlassen, wenn der Benutzer irgendwo draußen klickt, so wie es funktioniert Mit normalen Dialogen. Ich dachte, es würde irgendeine Art geben

 dialogFragment.setCanceledOnTouchOutside(true); 

Rufen Sie an, aber das sehe ich nicht in der Dokumentation.

Ist das mit DialogFragment überhaupt möglich? Oder schaue ich an falschen Stellen? Ich versuchte, Berührungsereignisse in der "Eltern" -Aktivität abzufangen, aber abgesehen davon, dass du kein Berührungsereignis bekommst, schien es mir nicht richtig zu sein.

  • Doppeltes Fragment, das Android mit ActionBar dreht
  • Android: Hinzufügen eines Fragments zu einer Aktivität
  • Hinzufügen von Tab in Fragment In Android?
  • CommitAllowingStateLoss () in Fragmentaktivitäten
  • Unterschied zwischen fragmentTransaction.add und fragmentTransaction.replace
  • Fragment hat bereits IllegalStateException hinzugefügt
  • Stecken mit Portierung von der Aktivität zum Fragment
  • Benutzerdefinierte Attribute in Android-Fragmenten
  • 7 Solutions collect form web for “Wie kann man ein DialogFragment beim Drücken außerhalb des Dialogs entlassen?”

     DialogFragment.getDialog().setCanceledOnTouchOutside(true); 

    Muss in onCreateView (wie Apurv Gupta darauf hingewiesen hat).

      @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); 

    Es war falsch. Ich hatte das gleiche Problem. Das funktioniert gut für Java und Mono für Android Mono wird sein:

     this.getDialog().SetCanceledOnTouchOutside(false); 

    Ich würde empfehlen, meine Lösung nur nach dem Ausprobieren von Lösungen zu verwenden. Ich habe meine lösung hier beschrieben Nur zu kurz, ich überprüfe berührungsgrenzen von dialogFragment.getView (). Wenn Touch-Punkte außerhalb von DialogFragment sind, entlasse ich den Dialog.

      Dialog.SetCanceledOnTouchOutside(true); 

    Für mich gearbeitet
    Mein Code

     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; } } 

    Viele Antworten hier aber, der App-Crash, wenn der Dialog öffnet. Schreiben von getDialog().setCanceledOnTouchOutside(true); Inside onCreateView hat nicht onCreateView und meine App abgestürzt.

    (Ich benutze AppCompatActivity als meine BaseActivity und android.app.DialogFragment als mein Fragment).

    Was ist eine der beiden folgenden Zeilen:

    GetDialog () setCanceledOnTouchOutside (true);

    ODER

    This.getDialog () setCanceledOnTouchOutside (true);

    Innen onActivityCreated wie

     @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 } 

    Was nicht zu benutzen:

    DialogFragment.getDialog () setCanceledOnTouchOutside (false);

    Wirft folgenden Fehler auf

    Bildbeschreibung hier eingeben

    Und das Schreiben des Codes in onCreateView stürzt die App ab! Bitte aktualisieren Sie die Antwort, wenn Sie etwas falsch finden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.