269 votes

Android vs DialogFragment dialogue

Google vous conseille d’utiliser au lieu d’un simple en utilisant , mais il est absurde d’utiliser un fait isolé pour une boîte de message simple confirmation oui-non. Quelle est la meilleure pratique dans ce cas ?

92voto

PJL Points 5865

Oui utilisez DialogFragment et onCreateDialog vous pouvez simplement utiliser un AlertDialog générateur de toute façon à créer un simple AlertDialog Oui/Non confirmation de boutons. Pas beaucoup de code.

En ce qui concerne la gestion des événements dans votre fragment il y aurait différentes façons de le faire, mais j'ai simplement définir un message d' Handler mon Fragment, pour le passer à l' DialogFragment par l'intermédiaire de son constructeur et ensuite passer des messages de retour de mon fragment du gestionnaire comme approprirate sur les différents événements de clic. De nouveau les différentes façons de le faire, mais la suivante fonctionne pour moi.

Dans la boîte de dialogue contiennent un message et de l'instancier dans le constructeur:

private Message okMessage;
...
okMessage = handler.obtainMessage(MY_MSG_WHAT, MY_MSG_OK);

Mise en œuvre de la onClickListener " dans votre boîte de dialogue, puis l'appel du gestionnaire selon le cas:

public void onClick(.....
    if (which == DialogInterface.BUTTON_POSITIVE) {
        final Message toSend = Message.obtain(okMessage);
        toSend.sendToTarget();
    }
 }

Modifier

Et comme Message est parcelable vous pouvez l'enregistrer en onSaveInstanceState et le restaurer

outState.putParcelable("okMessage", okMessage);

Puis, en onCreate

if (savedInstanceState != null) {
    okMessage = savedInstanceState.getParcelable("okMessage");
}

73voto

ashishduh Points 1843

Vous pouvez créer des sous-classes DialogFragment génériques comme YesNoDialog et OkDialog et passez dans le titre et le message si vous utilisez des boîtes de dialogue beaucoup dans votre application.

Puis appelez à l’aide de ce qui suit :

Et gérer le résultat dans `` .

34voto

user1281750 Points 2636

Utilisation DialogFragment sur AlertDialog:

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

    le showDialog méthode de l'Activité est déconseillée. L'invocation d'une boîte de dialogue d'ailleurs dans le code n'est pas conseillé, car vous aurez à gérer la boîte de dialogue vous (par exemple, changement d'orientation).

  • Différence DialogFragment - AlertDialog

    Sont-ils tellement différents? De Android de référence concernant DialogFragment:

    Un DialogFragment est un fragment qui affiche une fenêtre de dialogue, flottant au-dessus de ses l'activité de la fenêtre. Ce fragment contient une boîte de Dialogue objet, qui affiche le cas échéant, selon le fragment de l'état. Le contrôle de la la boîte de dialogue (les décisions d'afficher, de masquer, de les rejeter) doit être fait par le biais de l'API ici, pas avec des appels directs sur la boîte de dialogue.

  • D'autres notes

    • Les Fragments sont une évolution naturelle dans l'Android framework en raison de la diversité des appareils avec différentes tailles d'écran.
    • DialogFragments et les Fragments sont mis à disposition dans la bibliothèque de prise en charge qui fait de la classe utilisable dans toutes les versions d'Android.

29voto

hrnt Points 5835

Je vous conseille d'utiliser l' DialogFragment.

Bien sûr, la création d'un "Oui/Non" dialogue avec elle est assez complexe, compte tenu qu'il devrait être plutôt facile, mais la création d'une boîte de dialogue similaire à cocher avec Dialog est étonnamment complexe.

(Activité du cycle de vie qui le rend complexe - laissez - Activity gérer le cycle de vie de la boîte de dialogue - et il n'y a aucun moyen de passer des paramètres personnalisés, par exemple, le message personnalisé à l' Activity.showDialog si l'aide de l'API niveaux de moins de 8)

La bonne chose est que, généralement, vous pouvez construire votre propre abstraction sur le dessus de l' DialogFragment assez facilement.

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