2017-04-20 28 views
8

Nie wysyłam alertów bardzo często, ale za każdym razem, gdy to robię, przeczytanie documentation zajmuje mi trochę czasu i dowiedzieć się, jak to zrobić. Ponieważ musiałem to zrobić już kilka razy, zamierzam napisać poniżej odpowiedź, na którą mogę powrócić w przyszłości. W szczególności chcę porównać kod podstawowy dlaOkno alertów systemu Android z jednym, dwoma i trzema przyciskami

  • jeden przycisk (OK)
  • dwa przyciski (OK i Anuluj)
  • Trzy przyciski (pozytywne, negatywne, inne)

Byłoby dobrze jest mieć podstawowy kod dla tych trzech typowych typów ostrzeżeń w jednym miejscu, aby ułatwić ich odnoszenie i modyfikowanie w przyszłości. This question pyta, jak zrobić to za pomocą jednego przycisku.

Dodaję moją odpowiedź poniżej.

Odpowiedz

29

jeden przycisk

enter image description here

import android.support.v7.app.AlertDialog; 

public class MainActivity extends AppCompatActivity { 

    public void showAlertDialogButtonClicked(View view) { 

     // setup the alert builder 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("My title"); 
     builder.setMessage("This is my message."); 

     // add a button 
     builder.setPositiveButton("OK", null); 

     // create and show the alert dialog 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

dwa przyciski

enter image description here

public class MainActivity extends AppCompatActivity { 

    public void showAlertDialogButtonClicked(View view) { 

     // setup the alert builder 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("AlertDialog"); 
     builder.setMessage("Would you like to continue learning how to use Android alerts?"); 

     // add the buttons 
     builder.setPositiveButton("Continue", null); 
     builder.setNegativeButton("Cancel", null); 

     // create and show the alert dialog 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

Trzy przyciski

enter image description here

public class MainActivity extends AppCompatActivity { 

    public void showAlertDialogButtonClicked(View view) { 

     // setup the alert builder 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Notice"); 
     builder.setMessage("Launching this missile will destroy the entire universe. Is this what you intended to do?"); 

     // add the buttons 
     builder.setPositiveButton("Launch missile", null); 
     builder.setNeutralButton("Remind me later", null); 
     builder.setNegativeButton("Cancel", null); 

     // create and show the alert dialog 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

Jeśli tekst przycisk to zbyt długo, aby zmieścić się w poziomie, to zostanie automatycznie rozplanowane w pionowej kolumnie z trzema przyciskami.

enter image description here

Obróbka kliknięcia przycisku

OnClickListenernull był w powyższych przykładach. Możesz zastąpić null detektorem, aby coś zrobił, gdy użytkownik dotknie przycisku. Na przykład:

builder.setPositiveButton("Launch missile", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     // do something like... 
     launchMissile(); 
    } 
}); 

dzieje

Istnieje wiele więcej odmian dialogowych, które można zrobić. Aby uzyskać pomoc, zapoznaj się z documentation.

Ponieważ tylko trzy przyciski są obsługiwane w AlertDialog, tutaj jest przykład okna dialogowego z listą.

enter image description here

public class MainActivity extends AppCompatActivity { 

    public void showAlertDialogButtonClicked(View view) { 

     // setup the alert builder 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Choose an animal"); 

     // add a list 
     String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; 
     builder.setItems(animals, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (which) { 
        case 0: // horse 
        case 1: // cow 
        case 2: // camel 
        case 3: // sheep 
        case 4: // goat 
       } 
      } 
     }); 

     // create and show the alert dialog 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

Zobacz this answer podobnych przykładów radiowej listy przycisku i listy wyboru.

Uwagi

  • używaj sznurka zasobów zamiast ciężko kodowane ciągi.
  • Możesz zawinąć wszystko w klasie, która rozszerza się o DialogFragment, co ułatwia ponowne użycie okna dialogowego. (Patrz this o pomoc.)
  • Przykłady te wykorzystywane biblioteki wsparcia wspierać wersje przed API 11. Zatem import powinien być

    import android.support.v7.app.AlertDialog; 
    
  • pominąłem metodę onCreate w przykładach powyżej dla zwięzłości. Tam nie było nic specjalnego.

Zobacz także

+0

Które zobaczyć trzeba przejść do okna? –

+0

@Eduardo Lion, Zakładam, że odnosisz się do 'widoku' w' showAlertDialogButtonClicked (View view) '. To jest właśnie Button z metody 'onClick()' przycisku. Możesz to zignorować. Okno dialogowe w ogóle go nie używa. Okno dialogowe potrzebuje tylko kontekstu, który w tym przypadku był "tym", czyli działaniem. – Suragch