2011-01-12 17 views

risposta

111

Questo frammento di codice dovrebbe contribuire a spiegare i tre diversi pulsanti è possibile utilizzare:

alertDialog = new AlertDialog.Builder(this).create(); 

    alertDialog.setTitle("Dialog Button"); 

    alertDialog.setMessage("This is a three-button dialog!"); 

    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Button 1 Text", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 

     //... 

    } }); 

    alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Button 2 Text", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 

     //... 

    }}); 

    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Button 3 Text", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int id) { 

     //... 

    }}); 
+23

Questo deprecato ... dai un'occhiata alla mia risposta. – ninjasense

+1

@ninjasense, ho capito e stavo modificando mentre scrivevi la tua risposta. Grazie! – sahhhm

193

Quando si crea la finestra di dialogo, aggiungere qualcosa di simile per il costruttore:

builder = new AlertDialog.Builder(context); 
builder.setTitle("Test"); 
builder.setIcon(R.drawable.icon); 
builder.setMessage("test"); 
builder.setPositiveButton("Call Now", 
     new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int id) 
      { 
       dialog.cancel(); 
      } 
     }); 

builder.setNeutralButton("Setup", 
     new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int id) 
      { 
       context.startActivity(new Intent(context, Setup.class)); 
       //dialog.cancel(); 
      } 
     }); 

builder.setNegativeButton("Exit", 
     new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int id) 
      { 
       dialog.cancel(); 
      } 
     }); 
builder.create().show(); 
+1

@ninjasense È possibile aggiungere il quarto pulsante per avvisare la finestra di dialogo? – Geek

+4

in questo caso - no. Dovresti creare una vista personalizzata. – AndrewS

+0

La creazione di finestre di avviso personalizzate è più accurata. https://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android –

34

Aggiungi qualsiasi numero di pulsanti senza xml:

AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setTitle("Title"); 
    builder.setItems(new CharSequence[] 
      {"button 1", "button 2", "button 3", "button 4"}, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // The 'which' argument contains the index position 
        // of the selected item 
        switch (which) { 
         case 0: 
          Toast.makeText(context, "clicked 1", 0).show(); 
          break; 
         case 1: 
          Toast.makeText(context, "clicked 2", 0).show(); 
          break; 
         case 2: 
          Toast.makeText(context, "clicked 3", 0).show(); 
          break; 
         case 3: 
          Toast.makeText(context, "clicked 4", 0).show(); 
          break; 
        } 
       } 
      }); 
    builder.create().show(); 
+1

Questa soluzione non aggiunge pulsanti, ad es. "OK", "Annulla", ecc., Ma piuttosto impostare gli elementi da visualizzare nell'elenco di scelte, ad esempio "Opzione 1", "Opzione 2", ecc. Poiché la domanda menziona che "l'SDK consente solo per un pulsante positivo e negativo ", questo non risponde come superare questa limitazione. – d60402

+2

@ d60402 - hai un buon punto, ma se uno sviluppatore cerca un modo per creare una finestra di dialogo con più di 2 pulsanti trova questa risposta ... Avere questa opzione è molto utile perché è più flessibile con il numero di pulsanti. Per dirla in modo diverso, se i pulsanti positivi e negativi non bastano per quello che stai facendo, 3 pulsanti potrebbero diventare 4 abbastanza velocemente. Da qui i voti. –

+0

@ d60402 Il titolo della domanda è come aggiungere un terzo pulsante, non come mostrare il pulsante neutro. –

5
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        this); 

      // set title 
      alertDialogBuilder.setTitle("To Do List"); 

      // set dialog message 
      alertDialogBuilder 
        .setMessage("What do you want?") 
        .setCancelable(false) 
        .setPositiveButton("Delete All", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          // if this button is clicked, close 
          // current activity 




          dialog.cancel(); 


         } 
        }).setNeutralButton("Delete", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // if this button is clicked, close 
        // current activity 




        dialog.cancel(); 

       } 
      }) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          // if this button is clicked, just close 
          // the dialog box and do nothing 

          dialog.cancel(); 
         } 
        }); 

      // create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 

      // show it 
      alertDialog.show(); 
Problemi correlati