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.

11
demandé sur Community 2017-04-20 11:16:58

1 réponses

un bouton

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

deux boutons

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

trois boutons

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

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.

enter image description here

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.

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

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

53
répondu Suragch 2017-10-14 07:26:45