2012-11-07 14 views
29

Io uso questo codice nel mio progetto Android:alternativa setButton

alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 

Ma, Eclipse dice che setButton() è deprecato. Per favore, aiutami con una soluzione alternativa. Grazie!

+0

Hai guardato la [documentazione] (http://developer.android.com/reference/android/app/AlertDialog.html) per 'setButton'? Ti dice quale metodo usare invece – jbowes

risposta

67
AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
     builder.setTitle("ALERTTILESTRING") 
     .setMessage("alertNameString") 
     .setCancelable(false) 
     .setNegativeButton("Close",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

spero che il codice di cui sopra è una buona finestra di dialogo in cui funziona molto bene

+0

Grazie! Informazioni molto utili! –

+1

amico mio ... se ha un buon voto –

+0

Quindi il pulsante neutro è stato eliminato completamente? –

0

voi può impostare tre tipi di pulsanti con alertDialog

.setPositiveButton("name_of_button",LISTENER); 

.setNegativeButton("name_of_button",LISTENER); 

.setNeutralButton("name_of_button",LISTENER); 

L'ascoltatore può essere al di fuori della classe o classe anonima come

.setNegativeButton("Cancel",new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      alertDialog.cancel(); 
     } 
    }); 
+1

Questi metodi sono in "AlterDialog.Builder', non in" AltertDialog' stesso. – jbowes

7
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Alert"); 
      builder.setIcon(R.drawable.ic_launcher); 
      builder.setMessage("Attention"); 
      builder.setPositiveButton("Get Location", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 

         } 
        }); 

      builder.setNeutralButton("Set Location", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 



         } 
        }); 

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

         } 
        }); 
      builder.show(); 
34

setButton() non è ciò che è obsoleto, ma tale combinazione function + argomento. C'è ancora setButton(), ma è necessario dare un ID per il pulsante come primo argomento per setButton():

alertDialog.setButton(0, "OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     <do something>; 
    } 
}); 

Questo è utile se si vuole dare a tutti i pulsanti lo stesso OnClickListener:

class alertDialogOnClickListener implements DialogInterface.OnClickListener { 
    public void onClick(DialogInterface dialog, int which) { 
     switch(which){ 
      case 1: 
       <do something>; 
       break; 
      case 2: 
       <do something>; 
       break; 
     } 
    } 
} 
alertDialog.setButton(1, "OK", new alertDialogOnClickListener()); 
alertDialog.setButton(2, "Cancel", new alertDialogOnClickListener()); 
+2

Questa soluzione si chiude: java.lang.IllegalArgumentException: il pulsante non esiste – crubio

+2

Invece di 0, 1 e così via: DialogInterface.BUTTON_NEGATIVE DialogInterface.BUTTON_POSITIVE DialogInterface.BUTTON_NEUTRAL e così via – Nick

13

Usa: setButton(int whichButton, CharSequence text, DialogInterface.OnClickListener listener);

Per whichButton utilizzare uno dei seguenti:

DialogInterface.BUTTON_POSITIVE 
DialogInterface.BUTTON_NEGATIVE 
DialogInterface.BUTTON_NEUTRAL 
0

Buon post di Tony Stark here e puoi abbellire il tuo dialogo aggiungendo un'icona .. Assicurati di avere l'immagine nella tua cartella disegnabile.

builder.setTitle("Message Sent!").setCancelable(false).setNegativeButton("Close",new DialogInterface.OnClickListener() 
          {public void onClick(DialogInterface dialog, int id) {dialog.cancel();}}); 
          AlertDialog alert = builder.create(); 
          alert.setIcon(R.drawable.send);//call your image for your icon here 
          alert.show(); 

Esempio enter image description here

1

Ecco il mio breve e dolce uno, un'ottimizzazione di Android Developer. È più conciso e utilizza meno memoria.

(new AlertDialog.Builder(/*activity*/)) 
    .setTitle("ALERTTILESTRING") 
    .setMessage("alertNameString") 
    .setCancelable(false) 
    .setNegativeButton("Close",new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.cancel(); 
     } 
    }) 
    /*insert other Alert Dialog Builder methods here*/ 
    .show();