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?
Wie kann ich einem Android Alert Dialog eine dritte Schaltfläche hinzufügen?
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
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
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
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")
}
}
}
)
}
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()
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