2017-04-20 3 views
8

Ich mache keine Warnungen sehr oft, aber jedes Mal dauert es eine Weile, bis ich durch die documentation lesen und herausfinden, wie es geht. Da ich das jetzt ein paar Mal machen musste, werde ich unten eine Antwort schreiben, auf die ich in Zukunft zurückkommen kann. Insbesondere möchte ich fürAndroid Alert Dialog mit einer, zwei und drei Tasten

  • Eine Taste (OK)
  • Zwei Tasten (OK und Abbrechen)
  • Drei Tasten (positiv, negativ, Andere)

den grundlegenden Code vergleichen wäre es Es ist schön, den grundlegenden Code für diese drei gemeinsamen Alarmtypen an einer Stelle zu haben, damit Sie ihn in Zukunft leichter finden und ändern können. This question fragt, wie man es für einen Knopf macht.

Ich füge meine Antwort unten hinzu.

Antwort

29

Ein Knopf

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

Zwei Tasten

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

drei Tasten

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

Wenn die Schaltfläche Text, um ihn zu lang, um alle horizontal passen, dann wird es automatisch in einer vertikalen Spalte von drei Tasten gelegt bekommen.

enter image description here

Handhabung Button anklickt

Die OnClickListener war null in den obigen Beispielen. Sie können null durch einen Listener ersetzen, um etwas zu tun, wenn der Benutzer auf eine Schaltfläche klickt. Zum Beispiel:

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

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

Going On

gibt es viele weiteren Sorten von Dialogen, die Sie machen können. Weitere Informationen hierzu finden Sie unter documentation.

Da nur drei Schaltflächen in einer AlertDialog unterstützt werden, ist hier ein Beispiel für einen Dialog mit einer Liste.

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

Siehe this answer für ähnliche Beispiele einer Radiobutton-Liste und eine Checkbox-Liste.

Hinweise

  • Verwenden String-Ressourcen, anstatt hart codierte Strings.
  • Sie können alles in eine Klasse umwandeln, die DialogFragment für die einfache Wiederverwendung eines Dialogfelds erweitert. (Siehe this um Hilfe.)
  • Diese Beispiele verwendet, um die Support-Bibliothek Versionen 11 vor der API zu unterstützen, so sollte der Import

    import android.support.v7.app.AlertDialog; 
    
  • sein ich weggelassen, um die onCreate Verfahren in den obigen Beispielen der Kürze halber. Da war nichts Besonderes.

Siehe

+0

auch, das ich den Dialog übergeben müssen sehen? –

+0

@Eduardo Lion, ich nehme an, Sie beziehen sich auf die 'view' in' showAlertDialogButtonClicked (Ansicht anzeigen) '. Das ist nur der Button aus der onClick() 'Methode der Schaltfläche. Du kannst es ignorieren. Der Dialog verwendet es überhaupt nicht. Der Dialog benötigt nur den Kontext, in diesem Fall "das", also die Aktivität. – Suragch