Hhugues Posté(e) 8 octobre 2009 Share Posté(e) 8 octobre 2009 (modifié) Bonjour, Cela fait quelques jours maintenant que je n'arrive pas à réousdre un problème tout bête, mais dont je ne trouve pas de solution évidente. Voici le contexte : On est sur l'écran de sélection (on s'en fout de quoi) et à un moment on clique sur un bouton qui lance un public class NouvelleEntree extends Dialog implements OnClickListener Donc en gros on a une fenêtre de dialogue qui est lancée. Par la suite l'utilisateur va rentrer deux choses dans les textView prévus à cet effet. Une fois cette tâche effectuée il va cliquer un bouton sauvegarder et le tout va être enregistré dans une base SQL. Mais là où ça se corse c'est que juste après la fermeture de cette boîte de dialogue j'ai besoin de mettre à jour l'activity qui a créé le dialog. Et là je bloque... Quand le Dialog est créé elle ne se met pas en pause à ma connaissance (enfin dites moi si je me trompe), donc pas de onResume(), onStart() de configurable. Je ne peux pas utiliser de choses en static. Il faudrait donc que je trouve un moyen de détecter la fermeture de cette boîte de dialogue et de mettre à jour juste après. Merci pour votre aide ! PS : c'est sûrement très facile Modifié 9 octobre 2009 par Hhugues Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 8 octobre 2009 Share Posté(e) 8 octobre 2009 utilise une activity et pas un dialog. du coup au retour de l activity tu a un OnActivityResult...... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 8 octobre 2009 Share Posté(e) 8 octobre 2009 J'ajoute que si tu as choisis la Dialog pour son look, tu peux donner un thème à ton Activity qui la fera ressembler à une Dialog ;) Dans ton Layout XML : android:theme="@android:style/Theme.Dialog" Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hhugues Posté(e) 8 octobre 2009 Auteur Share Posté(e) 8 octobre 2009 Ok je vais tenter ça. En fait ça me gêne de faire 40 activities pour au final ne faire pratiquement rien par acitivity (mis à part quelques unes). Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 9 octobre 2009 Share Posté(e) 9 octobre 2009 Je comprends pas trop ton probleme... Tu n'as pas un bouton 'OK' ( ou dans ton cas 'Sauvegarder' ) avec du code dedans que tu appelles quand tu as fini de bosser avec ta dialog box ? Tu ne peux pas appeler une methode de l'activité dans le onClick de ta dialog ? Ou sinon, tu as aussi la possibilité de rajouter un dismiss listener, et/ou un cancel listener si tu as aussi des choses à gérer dans le cancel... J'ai du rater quelque chose, car je ne comprends pas pourquoi tout ca ne te suffit pas ? Emmanuel Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 9 octobre 2009 Share Posté(e) 9 octobre 2009 @Alocaly : Hhugues veut rafraîchir l'Activity qui a appelé la Dialog au click sur le bouton :o Comme le dit Alocaly, tu peux récupérer le parent de la Dialog au click du bouton (OK ou Cancel) et appeler des fonctions de celui-ci avec : getParent() (http://developer.android.com/intl/fr/reference/android/view/ViewParent.html#getParent%28%29) Ca te convient peut-être mieux vus que tu ne veux pô faire beaucoup d'Activity Après ya plusieurs solutions : Faire plusieurs Activity mais faire peu d'action dedans (mais c'est plus propre) Regrouper les fonctions (pour éviter la duplication de code notamment) Faire les 2 précédemment cités (C'est le mieux:p) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 9 octobre 2009 Share Posté(e) 9 octobre 2009 sinon plus simple avec un lambda: Si ton activity est Toto et le button qui l'a fait apparaitre a l'id buttonalacon, et que toto a un fonction refresh pour se raffraichir dans le OnCreate Button bt = (Button) findmachin(R.id.buttonalacon); bt.setOnClickListener(new OnClickListener(){ void onClick(){ Dialog xxx = new Dialog(){ ..... le code de ton dialog void dismiss(){ Toto.this.refresh(); } }; } }); Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hhugues Posté(e) 9 octobre 2009 Auteur Share Posté(e) 9 octobre 2009 Alors suite à vos conseils et malgré mes réticences j'ai fini par adopter l'approche par activity et j'ai donc fait une nouvelle activity tout marche à nouveau ! Merci beaucoup Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.