L'API dice che la finestra di dialogo degli avvisi può avere uno, due o tre pulsanti, ma l'SDK consente solo un pulsante positivo e negativo. Come posso aggiungere un terzo pulsante?Come posso aggiungere un terzo pulsante a una finestra di dialogo di avviso Android?
risposta
Questo frammento di codice dovrebbe contribuire a spiegare i tre diversi pulsanti è possibile utilizzare:
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) {
//...
}});
Questo deprecato ... dai un'occhiata alla mia risposta. – ninjasense
@ninjasense, ho capito e stavo modificando mentre scrivevi la tua risposta. Grazie! – sahhhm
Quando si crea la finestra di dialogo, aggiungere qualcosa di simile per il costruttore:
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 È possibile aggiungere il quarto pulsante per avvisare la finestra di dialogo? – Geek
in questo caso - no. Dovresti creare una vista personalizzata. – AndrewS
La creazione di finestre di avviso personalizzate è più accurata. https://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android –
Aggiungi qualsiasi numero di pulsanti senza 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();
Questa soluzione non aggiunge pulsanti, ad es. "OK", "Annulla", ecc., Ma piuttosto impostare gli elementi da visualizzare nell'elenco di scelte, ad esempio "Opzione 1", "Opzione 2", ecc. Poiché la domanda menziona che "l'SDK consente solo per un pulsante positivo e negativo ", questo non risponde come superare questa limitazione. – d60402
@ d60402 - hai un buon punto, ma se uno sviluppatore cerca un modo per creare una finestra di dialogo con più di 2 pulsanti trova questa risposta ... Avere questa opzione è molto utile perché è più flessibile con il numero di pulsanti. Per dirla in modo diverso, se i pulsanti positivi e negativi non bastano per quello che stai facendo, 3 pulsanti potrebbero diventare 4 abbastanza velocemente. Da qui i voti. –
@ d60402 Il titolo della domanda è come aggiungere un terzo pulsante, non come mostrare il pulsante neutro. –
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();
Correlato: [Finestra di avviso di Android con uno, due e tre pulsanti] (https://stackoverflow.com/questions/43513919/android-alert-dialog-with-one-two-and-three-button) – Suragch