IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Impossible d'ouvrir 2 fois une AlertDialog


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Par défaut Impossible d'ouvrir 2 fois une AlertDialog
    Bonsoir,
    je dois faire un erreur de débutant mais je ne trouve pas
    J'ai une activité dans laquelle je créé une AlertDialog en lui affectant un layout.
    Dans le OnCreate de mon activité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    final LayoutInflater factory = LayoutInflater.from(this);
            final LinearLayout ll_create_product = (LinearLayout) factory.inflate(R.layout.product_creation,null,false);
      	    alert_creation_produit = new AlertDialog.Builder(this);
      	    alert_creation_produit.setView(ll_create_product);
            //On donne un titre à l'AlertDialog
      	    alert_creation_produit.setTitle("Créer le produit");
    Ensuite quand on clique sur un item du menu j'ouvre cette fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	public boolean onMenuItemSelected(int featureId, MenuItem item) {
     
    		switch (item.getItemId()) {
    		case R.id.itemDelete:
    			return true;
    		case R.id.itemCancel:
    			return true;
    		case R.id.itemCreateProduct:
    			alert_creation_produit.show();
    			return true;
    		default:
    			return super.onMenuItemSelected(featureId,item);
    		}
    La fenêtre a 2 boutons (ok, annuler). Le traitement effectué dans le click bouton ok fonctionne très bien.
    Mon problème est : quand je clique sur le menu qui ouvre cette fenêtre une première fois. Tout se passe bien et je reviens à mon activité. Par contre si je clique une seconde fois l'appli plante
    Même comportement si je clique sur annuler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     	    alert_creation_produit.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
              } });

    Avez vous une idée ?
    Merci par avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par pierreduguet Voir le message
    Par contre si je clique une seconde fois l'appli plante
    Elle plante quoi ?
    Non pas un petit logcat pour nous montrer l'erreur ?

    [mode divination on]
    Je subodore que le dialog n'est jamais "dismissed" et du coup, une exception du genre "leaked window" est levée...
    [/mode diviation off]

    Un "dialog" est un question à poser au l'utilisateur (oui/non ok/cancel, etc..), en général, on ne fait aucun traitement dans les dialog en général, le résultat du dialog est traité par celui qui demande le dialog... Le meilleur moyen pour s'en souvenir est le dailog affiché pour confirmation de suppression. On pourrait très bien se passer du dialog et partir du principe que l'utilisateur sait ce qu'il fait... La question est optionnelle ? => Dialog, aucun traitement.
    D'autant que la différence entre activité et dialog est souvent mince.
    Mais bon... dans tous les cas, voici la philosophie Android:
    http://developer.android.com/design/...owledging.html

    Si je comprends bien la logique globale du truc:

    On a un data-object "Produit", avec tout le nécessaire pour les gérer... ce qui implique une activité de Creation/Edition (création = edition sans identifiant, et sans donnée)....

    Donc grosso merdo, quand on a besoin de créer un produit on fait:
    Intent intent = new Intent(this,ProductEditActivity.class);
    startActivity(this,intent);
    Pour modifier un produit existant, la même chose, avec un identifiant certainement dans les "extras"
    Si l'activité originelle a besoin d'attendre la fin de cette activité il y a startActivityForResult() bien plus efficace qu'une boite de dialogue (qui encore une fois n'est qu'une simple question posée à l'utilisateur genre oui/non).

  3. #3
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 27
    Par défaut
    Merci pour l'explication sur l'utilisation des AlertDialog et pour les design pattern. Le pire est que j'avais fait au début une autre activité avec StartActivityForResult mais (je ne sais pas pourquoi) je me suis dit qu'il ne fallait pas créer d'activité pour un oui ou un non.
    En tout cas merci, j'aime bien les explications sur la conception et la philosophie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2008, 08h16
  2. [VB6] Empêcher une fenêtre de s'ouvrir plusieurs fois ?
    Par cotmar dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 05/04/2006, 14h20
  3. [Struts javascript] ouvrir plusieurs fois une popup
    Par jc_romeo dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/03/2006, 09h36
  4. delphi/paradox : ouvrir deux fois une table
    Par lux dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/12/2005, 09h47
  5. Impossible d'ouvrir une base Access depuis Excel
    Par vciofolo dans le forum Access
    Réponses: 8
    Dernier message: 14/12/2005, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo