2010-08-24 11 views
0

Je voudrais montrer un certain nombre de dialogues d'alerte, de sorte que l'utilisateur doit gérer quelques questions (un peu comme un assistant).AlertDialog obtient une valeur de retour sans un gestionnaire

Est-il possible de faire en sorte que alertDialog attende que l'utilisateur choisisse quelque chose et retourne la valeur choisen?

HashMap<Integer, Question> questions = DataConnector.getCallQuestions(position); 

    int nextQuestion = position; 

    while(nextQuestion != 0){ 
     Question question = questions.get(nextQuestion); 

     CharSequence[] items = (String[])question.getAnswers(); 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle(question.getQuestion()); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 

      } 
     }); 
     AlertDialog alert = builder.create(); 

     //I would like to do something like this: 
     nextQuestion = alert.getClickedItem(); 
    } 

EDIT. Réponse à chris:

L'exécution du programme devrait attendre jusqu'à ce que l'utilisateur choisit une des options dans le AlertDialog

Est-ce possible?

Comme ceci:

private int answer = 0; 

    .... 
    ...methode(){ 

    //show dialog 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(question.getQuestion()); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
      CallHandleMenu.this.answer = item; //setting answer 
     } 
    }); 
    builder.create().show(); 

    //Here I need to know the answer (the answer should not be 0 here) 

Répondre

0

Je l'ai fixé cette façon (pseudocode), parce que mon code est sale: p

activity{ 
     onCreate{ 
      makeNextQuestion(1) 
     } 

     public void nextQuestion(int questionId){ 
      //add string and answering buttons to layout 
      btn.onClickList(){ 
       onClick(View btn){ 
        activity.this.nextQuestion(btn.getId()); 
       } 
      } 
     } 
    } 
0

Si vous voulez une série de boîtes AlertDialog apparaisse alors votre meilleur pari serait de mettre certains auditeurs à l'intérieur des boîtes de dialogue eux-mêmes.

.setPositiveButton("My Button Name", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          //do stuff like set some variables, maybe display another dialog 
         } 
       }) 

Notez que je suis en utilisant le bouton par défaut positif pour la boîte de dialogue d'alerte, vous devrez peut-être modifier selon ce que l'utilisateur est en cliquant.

Si vous allez faire quelques rappels dans votre classe Activity de la AlertDialogonClickListener vous pouvez utiliser MyActivityClassName.this.myMethodOrVariableHere pour le faire.

Espérons que cela aide, laissez-moi un commentaire si vous voulez plus de précisions.

+0

modifié ma question d'origine pour plus de détails – Berty

+0

@Berty ne vous attendez pas la réponse en dehors du 'onClickListener' du 'AlertDialog'. Au lieu de cela, enregistrez-le et lancez la boîte de dialogue suivante en utilisant 'showDialog (int id)' ou 'showDialog (int id, paquetage args)' Ce sont les deux méthodes de la classe 'Activity' donc' CallHandleMenu.this.showDialog (args) 'est Qu'est-ce que tu cherches – smith324