75 votes

Comment supprimer un DialogFragment lorsqu’on appuie en dehors du dialogue?

Je suis à l'aide d'un DialogFragment, et même si j'ai réussi à mettre une image pour la fermer (c'est à dire rejeter) la boîte de dialogue lorsque vous appuyez dessus, je vais avoir un moment difficile de trouver le moyen de fermer la boîte de dialogue lorsque l'utilisateur clique n'importe où à l'extérieur, de même qu'elle travaille avec des dialogues normal. Je pensais qu'il y aurait une sorte de

dialogFragment.setCanceledOnTouchOutside(true);

appeler, mais je ne vois pas que dans la documentation.

Est-ce possible avec DialogFragment à tous? Ou suis-je en le regardant dans les mauvais endroits? J'ai essayé d'intercepter les événements tactiles dans le "parent" de l'activité, mais à part de ne pas obtenir tout événement de touche, il ne semble pas juste pour moi.

167voto

Hamed Points 506
 DialogFragment.getDialog().setCanceledOnTouchOutside(true);
 

Devrait marcher

56voto

manuzhang Points 898
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       ...
       getDialog().setCanceledOnTouchOutside(true);
       ... 
       }

20voto

Yakiv Mospan Points 1291
    /** 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;
    }

3voto

Eugene Bosikov Points 11

DialogFragment.getDialog (). SetCanceledOnTouchOutside (false);

C'était une erreur de frappe. J'ai eu le même problème . Cela fonctionne très bien pour Java et Mono pour adroid Mono sera: YourDialogFragment.Dialog.SetCanceledOnTouchOutside (false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X