2011-12-20 8 views
4

Je vois de nombreux développeurs choisir de traiter leur activité comme une boîte de dialogue au lieu d'utiliser la boîte de dialogue Android et de la personnaliser.Activité de dialogue personnalisé ou de dialogue

J'ai cherché sur Internet pour cette réponse mais je n'ai pas pu le trouver.

Quelqu'un pourrait-il me donner les avantages et les inconvénients de la méthode de thème d'activité? Bien sûr, cela vous donne plus de liberté, mais y a-t-il des raisons de style pour éviter de personnaliser le dialogue standard? Moi-même, j'avais besoin de réutiliser des fragments dans les boîtes de dialogue, j'ai donc créé une activité thématique pour réconforter mes besoins mais maintenant j'ai des problèmes pour récupérer les résultats de l'activité thématique.

Merci d'avance. Bram

Répondre

1

1) Commencez votre activité en utilisant startActivityForResult.
2) Avant de fermer votre activité de style boîte de dialogue, ajoutez les données nécessaires aux extras d'intention et enregistrez-la à l'aide de SetResult (int, intention).
3) Pour traiter les résultats, ajoutez du code à un paramètre ActivityResult de l'activité parente qui récupérera les données de l'intention enregistrée.

aucun problème.

Oui, si vous avez besoin d'ajouter une forte logique personnalisée à votre "boîte de dialogue", l'utilisation d'une activité stylée est préférable. En cas d'alertes simples, utilisez Dialog.

+0

Tout d'abord, merci pour votre réponse. Je connais la méthode startActivityForResult. Cependant, j'ai aussi GridViews dans mes boîtes de dialogue. Lorsque je clique sur un bouton de ma grille, je dois envoyer les informations du bouton à l'activité parente. Je pourrais même avoir à envoyer une liste d'objets. N'est-ce pas beaucoup de données à transmettre entre les activités? – Bram

+0

Pourquoi avez-vous besoin de cela? Fermez-vous la boîte de dialogue après avoir appuyé sur le bouton? Si non, peut-être préférable de déplacer le code vers l'activité enfantine? – woodshy

+0

Oui, mais j'ai corrigé mon problème en laissant une classe écouter les événements dans le fragment (le fragment est dans mon activité de dialogue). La classe d'écoute recevra un événement quand un bouton a été cliqué, et obtiendra également la référence au bouton cliqué. Une fois l'événement reçu, il appelle le fragment pour fermer la boîte de dialogue (getActivity.finish()). Ainsi, la structure sera: activité (qui donne l'appel d'ouverture)> classe d'écoute> activité de dialogue> fragment. Merci quand même pour vôtre aide. Je vais accepter votre réponse pour m'aider à me remettre sur les rails. – Bram

1

Une boîte de dialogue personnalisée est plus facile à créer (vous n'avez pas besoin de gérer onCreate, onPause, les rotations d'écran, ...) et vous avez moins de temps système.

Vous devriez donc utiliser une boîte de dialogue personnalisée lorsque vous ne voulez pas afficher quelque chose de plus complexe qu'une boîte de dialogue.

Questions connexes