172 votes

Android AlertDialog bouton unique

J'aimerais créer un AlertDialog qui ne comporte qu'un seul bouton indiquant "OK" ou "Done", au lieu des boutons "yes" et "no" par défaut. Est-ce que cela peut être fait avec l'AlertDialog standard ou dois-je utiliser autre chose ?

388voto

William Tate Points 16777

Cela ne pourrait-il pas être fait en utilisant uniquement un bouton positif ?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Look at this dialog!")
       .setCancelable(false)
       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });
AlertDialog alert = builder.create();
alert.show();

1 votes

Cela fonctionne très bien, tant que l'on n'est pas gêné par le bouton unique situé à droite :(

2 votes

@ScottBiggs L'alignement des boutons dans les boîtes de dialogue est décidé par le système et peut changer selon les appareils, les versions et les langues (RTL, etc.). L'application ne devrait pas tenter de définir l'alignement mais l'intention (positive, négative, etc.).

0 votes

C'est génial ! Merci !

48voto

muzz Points 1819

Vous pourriez utiliser ceci :

AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setTitle("Title");
builder1.setMessage("my message");
builder1.setCancelable(true);
builder1.setNeutralButton(android.R.string.ok,
        new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
    }
});

AlertDialog alert11 = builder1.create();
alert11.show();

13voto

Nepster Points 893

Une autre approche

Builder alert = new AlertDialog.Builder(ActivityName.this);
alert.setTitle("Doctor");
alert.setMessage("message");
alert.setPositiveButton("OK",null);
alert.show(); 

Bonus

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
builder.setMessage("Message dialog with three buttons");

       builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });

      builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });

       builder.setNeutralButton("CANCEL", new DialogInterface.OnClickListener()     {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });
AlertDialog alert = builder.create();
alert.show();

Maintenant, c'est à vous d'utiliser un, deux ou trois boutons

9voto

Facundo Olano Points 709

C'est le plus proche que j'ai pu obtenir du one liner que cela devrait être si l'API Android était intelligente :

new AlertDialog.Builder(this)
    .setMessage(msg)
    .setPositiveButton("OK", null)
    .show();

4voto

MSaudi Points 607

Pour la réutilisation du code, vous pouvez le faire dans une méthode comme ceci

public static Dialog getDialog(Context context,String title, String message, DialogType typeButtons ) {

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title)
        .setMessage(message)
               .setCancelable(false);

        if (typeButtons == DialogType.SINGLE_BUTTON) {
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        //do things
                   }
               });
        }

        AlertDialog alert = builder.create();

        return alert;
    }

    public enum DialogType {
        SINGLE_BUTTON

    }

//D'autres problèmes de réutilisation du code, comme l'utilisation d'interfaces pour fournir un retour d'information, seront également excellents.

0 votes

@MarianPazdzioch pourquoi pensez-vous cela ?

0 votes

Que faire si je veux ajouter quatre boutons ?

0 votes

Cela convient s'il s'agit juste d'une "boîte de dialogue de confirmation" avec un seul bouton sans écouteur. Au-delà, cela ne vaut pas la peine de l'intégrer dans une aide comme celle-ci, car vous devrez gérer chaque pression de bouton.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X