Wie kann ich einem Android Alert Dialog eine dritte Schaltfläche hinzufügen?

Lesezeit: 4 Minuten

Die API sagt, dass der Alarmdialog eine, zwei oder drei Schaltflächen haben kann, aber das SDK erlaubt nur eine positive und eine negative Schaltfläche. Wie kann ich dann eine dritte Schaltfläche hinzufügen?

  • Verwandt: Android Alert Dialog mit einer, zwei und drei Schaltflächen

    – Suragch

    30. Juli 2017 um 22:45 Uhr

  • @Suragch nützliche Antwort für einen vollständigen Überblick

    – FindOutIslamNow

    31. Mai 2018 um 2:41 Uhr

Benutzer-Avatar
Ninjasinn

Wenn Sie das Dialogfeld erstellen, fügen Sie dem Builder so etwas hinzu:

builder = new AlertDialog.Builder(context);
builder.setTitle("Test");
builder.setIcon(R.drawable.icon);
builder.setMessage("test");
builder.setPositiveButton("Call Now",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });

builder.setNeutralButton("Setup",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                context.startActivity(new Intent(context, Setup.class));
                //dialog.cancel();
            }
        });

builder.setNegativeButton("Exit",
        new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });
builder.create().show();

  • @ninjasense Ist es möglich, dem Warndialog eine vierte Schaltfläche hinzuzufügen?

    – Aussenseiter

    10. September 2013 um 7:07 Uhr

  • in diesem Fall – nein. Sie sollten eine benutzerdefinierte Ansicht erstellen.

    – Andreas S

    24. September 2013 um 15:26 Uhr

  • Das Erstellen eines benutzerdefinierten Warndialogs ist genauer. stackoverflow.com/questions/13341560/…

    – EJ Chathuranga

    30. Januar 2018 um 7:09 Uhr

Benutzer-Avatar
sahhm

Dieses Code-Snippet soll helfen, die drei verschiedenen Schaltflächen zu erklären, die Sie verwenden können:

    alertDialog = new AlertDialog.Builder(this).create();

    alertDialog.setTitle("Dialog Button");

    alertDialog.setMessage("This is a three-button dialog!");

    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Button 1 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    } }); 

    alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Button 2 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    }}); 

    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Button 3 Text", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int id) {

        //...

    }});

  • Dies ist veraltet … werfen Sie einen Blick auf meine Antwort.

    – Ninjasinn

    12. Januar 2011 um 16:54 Uhr

  • @ninjasense, ich habe es bemerkt und bearbeitet, als Sie Ihre Antwort geschrieben haben. Vielen Dank!

    – sahhm

    12. Januar 2011 um 16:56 Uhr

Benutzer-Avatar
Oded Breiner

Hinzufügen irgendein Anzahl Buttons ohne XML:

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setItems(new CharSequence[]
            {"button 1", "button 2", "button 3", "button 4"},
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // The 'which' argument contains the index position
                    // of the selected item
                    switch (which) {
                        case 0:
                            Toast.makeText(context, "clicked 1", 0).show();
                            break;
                        case 1:
                            Toast.makeText(context, "clicked 2", 0).show();
                            break;
                        case 2:
                            Toast.makeText(context, "clicked 3", 0).show();
                            break;
                        case 3:
                            Toast.makeText(context, "clicked 4", 0).show();
                            break;
                    }
                }
            });
    builder.create().show();

  • Diese Lösung fügt keine Schaltflächen hinzu, z. B. “OK”, “Abbrechen” usw., sondern stellt vielmehr die Elemente ein, die in der Auswahlliste angezeigt werden sollen, z. B. “Option 1”, “Option 2” usw.. Da die Frage erwähnt, dass “das SDK nur eine positive und negative Schaltfläche zulässt”, dies beantwortet nicht, wie diese Einschränkung überwunden werden kann.

    – d60402

    25. März 2015 um 15:09 Uhr

  • @ d60402 – Sie haben einen guten Punkt, aber wenn ein Entwickler nach einer Möglichkeit sucht, einen Dialog mit mehr als 2 Schaltflächen zu erstellen, stößt er auf diese Antwort … Diese Option ist sehr nützlich, da sie mit der Anzahl der Schaltflächen flexibler ist. Anders ausgedrückt: Wenn positive und negative Tasten für das, was Sie tun, nicht ausreichen, können aus 3 Tasten ziemlich schnell 4 werden. Daher die Stimmen.

    – Oded Breiner

    25. März 2015 um 15:35 Uhr


  • @d60402 Der Titel der Frage ist, wie man eine dritte Schaltfläche hinzufügt, nicht, wie man eine neutrale Schaltfläche anzeigt.

    – Boris Treuchow

    26. August 2015 um 10:27 Uhr

  • @Boris Treukhov – Wenn das Dialogfeld eine positive und eine negative Schaltfläche hat, bedeutet dies, dass das Dialogfeld zwei Schaltflächen hat. Das Hinzufügen der neutralen Schaltfläche würde dem Dialog die dritte Schaltfläche geben. Dies ist im Wesentlichen das, was die beiden besten Antworten auf diese Frage tun.

    – d60402

    26. August 2015 um 13:38 Uhr

  • Wie in stackoverflow.com/a/19658646/2914140 gezeigt, zeigt diese Lösung Schaltflächen an, wenn keine Dialogmeldung festgelegt ist.

    – CoolMind

    24. Februar 2016 um 13:47 Uhr

Benutzer-Avatar
Nirav Bhavsar

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    this);

            // set title
            alertDialogBuilder.setTitle("To Do List");

            // set dialog message
            alertDialogBuilder
                    .setMessage("What do you want?")
                    .setCancelable(false)
                    .setPositiveButton("Delete All", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, close
                            // current activity




                            dialog.cancel();


                        }
                    }).setNeutralButton("Delete", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // if this button is clicked, close
                    // current activity




                    dialog.cancel();

                }
            })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, just close
                            // the dialog box and do nothing

                            dialog.cancel();
                        }
                    });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();

Mit Jetpack komponieren 1.0.x du kannst den … benutzen AlertDialog mit dem buttons Parameter:

val openDialog = remember { mutableStateOf(true) }

if (openDialog.value) {
    AlertDialog(
        onDismissRequest = {
            openDialog.value = false
        },
        title = {
            Text(text = "Title")
        },
        text = {
            Text(
                "Message area"
            )
        },
        buttons = {
            Row(
                modifier = Modifier.padding(all = 8.dp),
                horizontalArrangement = Arrangement.SpaceBetween
            ) {
                TextButton(onClick = {  }){
                    Text("First")
                }
                TextButton(onClick = { }) {
                    Text("Second")
                }
                TextButton(onClick = {  }) {
                    Text("Third")
                }
            }
        }
    )
}

Geben Sie hier die Bildbeschreibung ein


Mit dem Materialkomponentenbibliothek Sie können verwenden:

MaterialAlertDialogBuilder(context)
        .setTitle(resources.getString(R.string.title))
        .setMessage(resources.getString(R.string.supporting_text))
        .setNeutralButton(resources.getString(R.string.cancel)) { dialog, which ->
            // Respond to neutral button press
        }
        .setNegativeButton(resources.getString(R.string.decline)) { dialog, which ->
            // Respond to negative button press
        }
        .setPositiveButton(resources.getString(R.string.accept)) { dialog, which ->
            // Respond to positive button press
        }
        .show()

Geben Sie hier die Bildbeschreibung ein

1334690cookie-checkWie kann ich einem Android Alert Dialog eine dritte Schaltfläche hinzufügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy