2011-01-12 20 views
96

Interfejs API informuje, że okno dialogowe alertów może mieć jeden, dwa lub trzy przyciski, ale SDK zezwala tylko na przycisk dodatni i ujemny. Jak mogę dodać trzeci przycisk?Jak mogę dodać trzeci przycisk do okna alarmowego systemu Android?

+0

Powiązane: [Okno alertu systemu Android z jednym, dwoma i trzema przyciskami] (https://stackoverflow.com/questions/43513919/android-alert-dialog-with-one- two-and-three-buttons) – Suragch

Odpowiedz

111

Ten fragment kodu powinien pomóc wyjaśnić trzy różne przyciski można użyć:

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

To przestarzałe ... spójrz na moją odpowiedź. – ninjasense

+1

@ninjasense, zdałem sobie sprawę, i edytowałem, kiedy napisałeś swoją odpowiedź. Dzięki! – sahhhm

193

Podczas tworzenia okna, dodać coś takiego do konstruktora:

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 Czy można dodać 4. przycisk do okna alertu? – Geek

+4

w tym przypadku - nie. Powinieneś zrobić niestandardowy widok. – AndrewS

+0

Tworzenie własnego okna alertów alertów jest bardziej prawdopodobne. https://stackoverflow.com/questions/13341560/how-to-create-a-ustom-dialog-box-in-android –

34

Dodaj dowolny liczba przycisków bez 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

To rozwiązanie nie dodaje przycisków, np. "OK", "Anuluj" itp., Ale raczej ustawienie pozycji do wyświetlenia na liście opcji, np. "Opcja 1", "Opcja 2" itp. Ponieważ pytanie wspomina, że ​​"tylko SDK pozwala dla przycisku dodatniego i ujemnego ", to nie odpowiada, jak przezwyciężyć to ograniczenie. – d60402

+2

@ d60402 - masz dobry punkt, ale jeśli programista szukający sposobu na utworzenie okna dialogowego z więcej niż 2 przyciskami natrafia na tę odpowiedź ... Ta opcja jest bardzo przydatna, ponieważ jest bardziej elastyczna dzięki liczbie przycisków. Innymi słowy, jeśli przyciski dodatnie i ujemne nie wystarczą do tego, co robisz, 3 przyciski mogą stać się 4 dość szybko. Stąd głosy. –

+0

@ d60402 Tytuł pytania brzmi: jak dodać trzeci przycisk, a nie jak wyświetlić przycisk neutralny. –

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