2011-01-12 13 views

Respuesta

111

Este fragmento de código debería ayudar a explicar los tres botones diferentes que puede utilizar:

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

Esto desaprobado ... eche un vistazo a mi respuesta. – ninjasense

+1

@ninjasense, me di cuenta y estaba editando mientras escribía su respuesta. ¡Gracias! – sahhhm

193

Cuando se crea el cuadro de diálogo, añadir algo como esto para el constructor:

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 ¿Es posible agregar el 4to botón para alertar al diálogo? – Geek

+4

en este caso - no. Debe hacer una vista personalizada. – AndrewS

+0

Crear un cuadro de diálogo de alerta personalizado es más preciso. https://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android –

34

Añadir cualquier número de botones sin 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

Esta solución no agrega botones, p. "Aceptar", "Cancelar", etc., sino configurar los elementos que se mostrarán en la lista de opciones, por ejemplo, "Opción 1", "Opción 2", etc. Dado que la pregunta menciona que "el SDK solo permite para un botón positivo y negativo ", esto no responde cómo superar esa limitación. – d60402

+2

@ d60402: tiene un buen punto, pero si un desarrollador busca una forma de crear un diálogo con más de 2 botones, encuentra esta respuesta ... Tener esta opción es muy útil porque es más flexible con la cantidad de botones. Para decirlo de otra manera, si los botones positivos y negativos no son suficientes para lo que estás haciendo, 3 botones podrían convertirse en 4 bastante rápido. De ahí los votos. –

+0

@ d60402 El título de la pregunta es cómo agregar un tercer botón, no cómo mostrar el botón neutral. –

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(); 
Cuestiones relacionadas