Dialogue d'alerte Android avec un, deux, et trois boutons
Je ne fais pas d'alertes très souvent, mais chaque fois que je le fais, il me faut un certain temps pour lire la documentation et de comprendre comment le faire. Depuis que j'ai eu à faire à quelques reprises aujourd'hui, je vais écrire une réponse ci-dessous que je peux revenir à l'avenir. Plus précisément je veux comparer le code de base pour
- d'Un seul bouton (OK)
- deux boutons (OK et Cancel)
- trois boutons (Positif, Négatif, Autre)
il serait bon d'avoir le code de base de ces trois types d'alerte communs en un seul endroit pour faciliter la consultation et la modification à l'avenir. Cette question , demande comment le faire pour un seul bouton.
j'ajoute ma réponse ci-dessous.
1 réponses
un bouton
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();
}
}
deux boutons
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();
}
}
trois boutons
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();
}
}
Si le texte du bouton trop de temps pour tous les ajuster horizontalement, ensuite, il sera automatiquement mis dans une colonne verticale de trois boutons.
Handling Button Clics
le OnClickListener
était null
dans les exemples ci-dessus. Vous pouvez remplacer null
avec un écouteur de faire quelque chose lorsque l'utilisateur appuie sur un bouton. Par exemple:
builder.setPositiveButton("Launch missile", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// do something like...
launchMissile();
}
});
En Cours
Il y sont beaucoup plus de variétés de dialogues que vous pouvez faire. Voir la documentation pour de l'aide à ce sujet.
puisque seulement trois boutons sont supportés dans un AlertDialog
, voici un exemple de dialogue avec une liste.
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();
}
}
Voir cette réponse pour des exemples similaires d'un bouton radio liste et une liste de case à cocher.
Notes
- utilisez des ressources de chaîne plutôt que des chaînes codées.
- vous pouvez tout envelopper dans une classe qui s'étend
DialogFragment
pour une réutilisation facile d'un dialogue. (Voir ce pour obtenir de l'aide.) -
ces exemples utilisaient la bibliothèque de support pour supporter les versions antérieures à API 11. Donc l'importation devrait être
import android.support.v7.app.AlertDialog;
-
j'ai omis la méthode
onCreate
dans les exemples ci-dessus par souci de brièveté. Il n'y avait rien de spécial.
voir aussi
- comment désactiver le bouton positif
- utilisez un Toast plutôt qu'une alerte pour les messages courts
- "1519630920 d'une" liste de choix, le bouton radio liste, et liste de contrôle
- Comment mettre en œuvre une coutume AlertDialog Vue