Comment faire disparaître une DialogFragment lorsque vous appuyez sur l'extérieur de la boîte de 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);
appel, 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.
Vous devez vous connecter pour publier un commentaire.
Doit être appelée dans
onCreateView
(comme Apurv Gupta souligné).onCreateView
setCanceledOnTouchOutside
dansonCreateView
comme par @Apurv. Je dois mentionner que j'ai appelésetCanceledOnTouchOutside(false)
Beaucoup de réponses ici, mais, l'application crash quand une fenêtre de dialogue s'ouvre.
Écrit
getDialog().setCanceledOnTouchOutside(true);
à l'intérieur deonCreateView
n'a pas fonctionné et s'est écrasé mon application.(Je suis en utilisant
AppCompatActivity
que mon BaseActivity etandroid.app.DialogFragment
que mon Fragment).Ce qui fonctionne c'est l'une des deux lignes suivantes:
OU
à l'intérieur de
onActivityCreated
commeQuoi ne pas utiliser:
jette d'erreur suivant
Et de l'écriture du code dans
onCreateView
bloque l'Application!Veuillez mettre à jour la réponse si vous trouvez quelque chose de mal.
onCreateDialog()
, où c'est une façon habituelle de l'initialisation. Dans ce casonCreateView()
ne fait rien et même ne contient pas de vue. Vous pouvez essayer de déplacer le code deonCreateDialog()
.onCreateDialog
,onCreateView
dans le passé proche. Peut-être que je me trompe, et que vous devez conserveronActivityCreated
, c'est une bonne méthode pour faire d'initialisation supplémentaires (voir la section stackoverflow.com/a/50734566/2914140, par exemple).BottomSheet
mise en œuvre. Il pourrait être différent dans le cas de BSheet je suis d'accord. Mais cette solution pour unDialogFragment
fonctionne bien.C'était erreur de frappe. J'ai eu le même problème. Cela fonctionne très bien pour Java et Mono pour android Mono sera:
Je vous recommande d'utiliser ma solution seulement après l'essai de solutions ci-dessus. J'ai décrit ma solution ici. Juste pour bref, je suis vérification de toucher les limites de DialogFragment.getView(). Lorsque les points de contact sont en dehors de DialogFragment, je suis rejetant la boîte de Dialogue.
A fonctionné pour moi
Mon Code