web-dev-qa-db-fra.com

Avantages de DialogFragment par rapport à AlertDialog

Lors du développement d'une application Android Android, j'ai lu qu'il est recommandé d'utiliser DialogFragment au lieu d'utiliser directement un AlertDialog pour afficher les alertes et les confirmations.

Cela se fait, par exemple, sur la documentation de DialogFragment: http://developer.Android.com/reference/Android/app/DialogFragment.html

Les gens disent aussi qu'ils préfèrent cela ici: Android DialogFragment vs Dialog

Je voudrais connaître les avantages de cette approche, car le code devient plus complexe.

Merci

56
Raphael Petegrosso

Utilisez DialogFragment sur Dialog:


  • Depuis l'introduction de l'API niveau 13 :

    la méthode showDialog de Activity est obsolète. Il n'est pas conseillé d'appeler une boîte de dialogue ailleurs dans le code car vous devrez gérer la boîte de dialogue vous-même (par exemple, changement d'orientation). Ne pas utiliser le showDialog entraînera des exceptions occasionnelles, la boîte de dialogue n'est liée à aucune activité.

    Remarque sur showDialog:

    référence de Dialog: Les activités fournissent une fonction pour gérer la création, la sauvegarde et la restauration des dialogues. Voir onCreateDialog (int), onPrepareDialog (int, Dialog), showDialog (int) et disableDialog (int). Si ces méthodes sont utilisées, getOwnerActivity () renverra l'activité qui a géré cette boîte de dialogue.

  • Différence entre DialogFragment et AlertDialog

    Une chose qui vous vient à l'esprit lorsque vous lisez votre question. Sont-ils tellement différents? Un DialogFragment est assez similaire à un Dialog, il est juste enveloppé dans un fragment. De Android concernant DialogFragment:

    Un DialogFragment est un fragment qui affiche une fenêtre de dialogue, flottant au-dessus de la fenêtre de son activité. Ce fragment contient un objet Dialog, qu'il affiche comme approprié en fonction de l'état du fragment. Le contrôle de la boîte de dialogue (décider quand l'afficher, la masquer, la fermer) doit se faire via l'API ici , pas avec des appels directs sur la boîte de dialogue.

  • Autres notes

    • Les fragments sont une évolution naturelle du framework Android en raison de la diversité des appareils avec différentes tailles d'écran.
    • DialogFragments and Fragments sont disponibles dans la bibliothèque de support, ce qui rend la classe utilisable dans toutes les versions actuelles d'Android.
47
Tobrun

C'est facile.
DialogFragment est un fragment. Alors, que peut vous fournir un fragment alors que d'autres objets ne le peuvent pas?
Ce sont les rappels du cycle de vie.
Donc, avec DialogFragment, il peut être très puissant et rendre votre code beaucoup plus propre.
Avez-vous déjà vu des fuites de fenêtre si vous ne fermiez pas une boîte de dialogue lorsque son activité était en train d'être détruite? Donc, pour éviter cela, avez-vous déjà essayé de fermer la boîte de dialogue lorsque onPause () a été appelé? Donc, pour ce faire, avez-vous déjà dû faire une référence de cette boîte de dialogue à un objet de niveau classe?
Avec DialogFragment, tout est géré.
Et vous obtenez tous les rappels du cycle de vie.
.

46
KoreanDude