Je ne fais pas des alertes très souvent, mais chaque fois que je le fais, il me faut un certain temps pour lire la documentation et comprendre comment le faire. Comme je suis obligé de faire cela à quelques reprises maintenant, je vais écrire ci-dessous une réponse à laquelle je pourrai revenir ultérieurement. Plus précisément, je veux comparer le code de base pour
Il serait bien d’avoir le code de base pour ces trois types d’alerte courants en un seul endroit pour pouvoir le consulter et le modifier facilement à l’avenir. Cette question demande comment faire pour un bouton.
J'ajoute ma réponse ci-dessous.
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();
}
}
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();
}
}
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 est trop long pour que tout le monde puisse être placé horizontalement, il sera automatiquement mis en forme dans une colonne verticale de trois boutons.
Le OnClickListener
était null
dans les exemples ci-dessus. Vous pouvez remplacer null
par un écouteur pour 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();
}
});
Il y a beaucoup plus de variétés de dialogues que vous pouvez créer. Voir le documentation pour obtenir de l'aide à ce sujet.
Comme seuls trois boutons sont pris en charge 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'une liste de boutons radio et d'une liste de cases à cocher.
DialogFragment
pour une réutilisation facile d'un dialogue. (Voir this pour obtenir de l'aide.)Ces exemples utilisaient la bibliothèque de support pour prendre en charge 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 là-bas.