2012-11-07 15 views
29

Używam tego kodu w moim projekcie android:alternatywna setButton

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

Ale Eclipse mówi, że setButton() jest przestarzała. Proszę, pomóż mi z alternatywnym rozwiązaniem. Dzięki!

+0

Czy patrzeć na [dokumentacja] (http://developer.android.com/reference/android/app/AlertDialog.html) dla 'setButton'? Mówi ci, jakiej metody użyć zamiast tego. – jbowes

Odpowiedz

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(); 
    } 

Mam nadzieję, że powyższy kod jest dobry dialog, w którym działa bardzo dobrze

+0

Dzięki! Bardzo przydatne informacje! –

+1

mój przyjaciel ... jeśli to dobry głos –

+0

Czy przycisk neutralny został całkowicie usunięty? –

0

ty można ustawić trzy rodzaje przycisków z ostrzeżeniemDialog

Odbiornik może należeć do klasy lub klasy anonimowej, takiej jak

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

Metody te są na 'AlterDialog.Builder', a nie na samym AltertDialog'. – 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() nie jest to, co jest przestarzałe, ale to połączenie funkcji + argumentem. Jest jeszcze setButton(), ale trzeba podać identyfikator dla przycisku jako pierwszy argument dla setButton():

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

Funkcja ta jest przydatna, jeśli chcesz dać wszystkim przycisków taką samą 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

To rozwiązanie wymusza zamknięcie: java.lang.IllegalArgumentException: Przycisk nie istnieje – crubio

+2

Zamiast 0, 1 i tak dalej użyj: DialogInterface.BUTTON_NEGATIVE DialogInterface.BUTTON_POSITIVE DialogInterface.BUTTON_NEUTRAL i tak dalej – Nick

13

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

Dla whichButton użycia jednego z następujących powodów:

DialogInterface.BUTTON_POSITIVE 
DialogInterface.BUTTON_NEGATIVE 
DialogInterface.BUTTON_NEUTRAL 
0

Dobra wiadomość od Tony'ego Starka here. Możesz upiększyć swoje okno dialogowe, dodając ikonę. Upewnij się, że masz zdjęcie w folderze do rysowania.

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

Przykład enter image description here

1

Oto moja krótka i słodki, optymalizacja Android Developer. Jest bardziej zwięzły i zużywa mniej pamięci.

(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(); 
Powiązane problemy