2010-11-22 9 views
1

J'ai un pseudo-code suivant.Android - AlertDialog dans onContextItemSelected ne fonctionne pas

public boolean onContextItemSelected(MenuItem aItem) { 
     switch(aItem.getItemId()) { 
      case A: { 
       new AlertDialog.Builder(this) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .setTitle("Delete") 
        .setMessage("Delete?") 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // do stuff A... 
         } 
        }); 

        // do stuff B... 

        return true; 
      } 
     } 
    } 

Le problème est qu'il ne montre jamais le dialogue d'alerte. Cependant, il fait les choses comme indiqué dans "faire des choses B ..."

Est-ce que quelqu'un sait pourquoi AlertDialog montre maintenant?

Merci!

Répondre

2

vous devez .Create() .show() va résoudre le problème :)

AlertDialog dialog = new AlertDialog.Builder(this) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("Delete") 
       .setMessage("Delete?") 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }).create(); 
dialog.show(); 

Et quand vous ne vous pouvez pas besoin plus rejeter (le).

Édition: Désolé. J'ai oublié .create() :)

+0

Je suppose que c'est arrivé à nous tous un jour. – Cristian

+0

totalement! et plus d'une fois :) j'ai arrêté de compter combien de fois j'ai oublié d'appeler .show() et je me demandais, jusqu'à ce que je trouve le problème et me fâche: D –

+0

Bonjour, merci beaucoup pour votre réponse. Ça a marché. Je me sens comme un idiot après avoir souffert pendant quelques jours à ce sujet. lol. Eh bien, je pense que je m'en souviendrai la prochaine fois. (Je suis un newb android;)) Merci! – the5threvolution