2011-04-27 19 views
143

Me gustaría tener un generador de AlertDialog que solo tenga un botón que diga OK o Listo o algo así, en lugar de los sí y no predeterminados. ¿Se puede hacer eso con el AlertDialog estándar, o tendría que usar algo más?Android AlertDialog Botón único

Respuesta

318

¿No se podía hacer eso solo con un botón positivo?

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("Look at this dialog!") 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       //do things 
      } 
     }); 
AlertDialog alert = builder.create(); 
alert.show(); 
+0

Nice Simple Solution –

+1

Funciona muy bien, siempre y cuando no le importe ese solo botón justificado a la derecha. :( –

+0

@ScottBiggs La alineación de los botones en los cuadros de diálogo es decidida por el sistema y puede cambiar entre dispositivos, versiones e idiomas (RTL, etc.). La aplicación no debe intentar establecer la alineación sino el intento (positivo, negativo, etc.) – aberaud

42

Usted podría utilizar esto:

AlertDialog.Builder builder1 = new AlertDialog.Builder(this); 
builder1.setTitle("Title"); 
builder1.setMessage("my message"); 
builder1.setCancelable(true); 
builder1.setNeutralButton(android.R.string.ok, 
     new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.cancel(); 
    } 
}); 

AlertDialog alert11 = builder1.create(); 
alert11.show(); 
-6

En Mono para Android se puede hacer esto:

var ad = new AlertDialog.Builder(this); 
ad.SetTitle("Title"); 
ad.SetMessage("Message"); 
ad.SetPositiveButton("OK", delegate { ad.Dispose(); }); 
ad.Show(); 
4

Para la reutilización de código, puede hacerlo en un método como este

public static Dialog getDialog(Context context,String title, String message, DialogType typeButtons) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(context); 
     builder.setTitle(title) 
     .setMessage(message) 
       .setCancelable(false); 

     if (typeButtons == DialogType.SINGLE_BUTTON) { 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         //do things 
        } 
       }); 
     } 

     AlertDialog alert = builder.create(); 

     return alert; 
    } 

    public enum DialogType { 
     SINGLE_BUTTON 

    } 

// Otros problemas de reutilización de código como usin g las interfaces para proporcionar comentarios también serán excelentes.

+1

Llamaré es excesivo, no es una reutilización de código. Esto es demasiado complicado para mantener ... –

+0

@ MarianPaździoch ¿por qué piensas eso? – MSaudi

+0

¿Qué ocurre si quiero agregar cuatro botones? –

10

Otro enfoque

Builder alert = new AlertDialog.Builder(ActivityName.this); 
alert.setTitle("Doctor"); 
alert.setMessage("message"); 
alert.setPositiveButton("OK",null); 
alert.show(); 

Bono

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 
builder.setMessage("Message dialog with three buttons"); 

     builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       //do things 
      } 
     }); 

     builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       //do things 
      } 
     }); 

     builder.setNeutralButton("CANCEL", new DialogInterface.OnClickListener()  { 
      public void onClick(DialogInterface dialog, int id) { 
       //do things 
      } 
     }); 
AlertDialog alert = builder.create(); 
alert.show(); 

Ahora le toca a usted para utilizar uno, dos o tres botones ..

7

Este es lo más cerca que puedo coul d llegar al chiste esto debería ser si la API de Android era cualquier inteligente:

new AlertDialog.Builder(this) 
    .setMessage(msg) 
    .setPositiveButton("OK", null) 
    .show(); 
+0

¿No sería eso un botón justificado a la derecha? –

0

Es muy simple

new AlertDialog.Builder(this).setView(input).setPositiveButton("ENTER",    
         new DialogInterface.OnClickListener()      
         { public void onClick(DialogInterface di,int id)  
          { 
           output.setText(input.getText().toString()); 
          } 
         } 
        ) 
     .create().show(); 

En caso de que desee leer el programa completo ver aquí: Program to take input from user using dialog and output to screen

Cuestiones relacionadas