gaumeze Posté(e) 14 janvier 2013 Share Posté(e) 14 janvier 2013 Bonjour à tous, Petit problème de gestion d'activité via une AlertDialog : J'ai une classe qui permet d'enregistrer des données saisies par un utilisateur et qui vérifie l'intégrité de ces données dans une bdd. Si les données ne sont pas intégres, un alertDialog s'affiche pour demander à l'utilisateur ce qu'il veut faire pour régler le problème. Voici shématiquement mon code Code de l'activity: public class Activity1 extends Activity { private Context context; public onclickListener enregistrer = new onclickListener() { Action action = new Action(); DAOAction daoAction = new DAOAction(context); daoAction.insertAction(action); daoAction.close(); Intent intent = new Intent(context, Activity2.class); startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_action_ajout_action); context = this; btEnregistrer = (Button) findViewById(R.id.action_ajout_envoyer); btEnregistrer.setonclickListener(enregistrer); /** Gestion du formulaire */ } } Code de la classe DAOAction: public class DAOAction extends DAOBase{ String [] choix = {"choix 1", "choix 2"}; Context context; public DAOAction(Context context){ //constructeur qui ouvre la connexion à la bdd super.(context); this.context = context; } public void insertAction(Action action) { try{ // gestion de l'insertion par une méthode quelconque insert(action); } catch (insertException e) { AlertDialog.Builder builder = new AlertDialog.Builder(context); buider .setTitle("Erreur") .setItems(choix, new DialogInterface.onclickListener(){ public void onclick(DialogInterface dialogInterface, int item) { /** Traitement de l'erreur */ } }); builder.create().show(); } } } L'alertDialog apparait mais disparait aussitôt pour que l'activity2 apparaisse, du coup l'erreur n'est pas traitée. Je sais que je pourrais gérer l'alert dans mon activity mais ça alourdirait tout, j'aimerais vraiment que l'architecture reste la même. Une idée ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
ygort Posté(e) 15 janvier 2013 Share Posté(e) 15 janvier 2013 Je dirais que la manière la plus propre de faire serait de déclarer un listener dans ton dao que tu appelles dans ton dialog. Il te suffit d'en instancier un dans ton activity (ou même de faire hériter ton activity par ce listener). De toute façon tu n'as pas le choix il te faut un callback car le builder.show() ne stoppe pas le thread, doonc ton activity2 est lancée. Je ne sais pas si je suis très clair... Je peux être plus précis si tu ne m'as pas compris. Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaumeze Posté(e) 15 janvier 2013 Auteur Share Posté(e) 15 janvier 2013 Salut @Ygort et merci pour ta réponse, Pour te répondre en retour : non, ta réponse n'est pas claire pour moi, mais ça vient de lacune de ma part en DOO. Je ne maitrise pas encore le principe d'interface (qui est apparemment la base du callback). Je reviens sur cette discussion dès que j'aurai pigé et assimilé (peut être ce soir). Encore merci, décidemment, android est puissant mais sa communaté plus encore. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.