API говорит, что диалоговое окно оповещения может иметь одну, две или три кнопки, но SDK допускает только положительную и отрицательную кнопку. Как тогда я могу добавить третью кнопку?
Как добавить третью кнопку в диалоговое окно предупреждений Android?
comment
Связано: Диалоговое окно оповещения Android с одной, двумя и тремя кнопками < /а>
- person Suragch   schedule 31.07.2017
comment
@Suragch полезный ответ для полного обзора
- person FindOutIslamNow   schedule 31.05.2018
Ответы (4)
Этот фрагмент кода должен помочь объяснить три разные кнопки, которые вы можете использовать:
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) {
//...
}});
person
sahhhm
schedule
12.01.2011
Это устарело... взгляните на мой ответ.
- person ninjasense; 12.01.2011
@ninjasense, я понял и редактировал, когда ты писал свой ответ. Спасибо!
- person sahhhm; 12.01.2011
Когда вы создаете диалоговое окно, добавьте что-то вроде этого в конструктор:
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();
person
ninjasense
schedule
12.01.2011
@ninjasense Можно ли добавить 4-ю кнопку в диалоговое окно с предупреждением?
- person Geek; 10.09.2013
в данном случае - нет. Вы должны сделать пользовательский вид.
- person AndrewS; 24.09.2013
Создание настраиваемого диалогового окна оповещения более точно. stackoverflow .com/questions/13341560/
- person E J Chathuranga; 30.01.2018
Добавьте любое количество кнопок без 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();
person
Oded Breiner
schedule
02.01.2014
Это решение не добавляет кнопки, например. ОК, Отмена и т. д., а скорее установка элементов, которые будут отображаться в списке вариантов, например, вариант 1, вариант 2 и т. д. Поскольку в вопросе упоминается, что SDK допускает использование только положительной и отрицательной кнопки, это не не отвечаю, как преодолеть это ограничение.
- person d60402; 25.03.2015
@ d60402 - у вас есть хорошая мысль, но если разработчик, ищущий способ создать диалог с более чем двумя кнопками, наткнется на этот ответ ... Наличие этой опции очень полезно, потому что она более гибкая с количеством кнопок. Другими словами, если положительных и отрицательных кнопок недостаточно для того, что вы делаете, 3 кнопки могут довольно быстро превратиться в 4. Отсюда и голоса.
- person Oded Breiner; 25.03.2015
@ d60402 Название вопроса заключается в том, как добавить третью кнопку, а не в том, как показать нейтральную кнопку.
- person Boris Treukhov; 26.08.2015
@Boris Treukhov - Если в диалоговом окне есть кнопка «плюс» и кнопка «минус», это означает, что в диалоговом окне есть две кнопки. Добавление нейтральной кнопки дало бы диалогу третью кнопку. По сути, это то, что делают два верхних ответа на этот вопрос.
- person d60402; 26.08.2015
Как показано на stackoverflow.com/a/19658646/2914140, это решение будет отображать кнопки, когда диалоговое сообщение не установлено.
- person CoolMind; 24.02.2016
Отличное решение. Очень помогает, когда требуется использовать более 3 кнопок в диалоговом окне предупреждения!
- person sam; 21.11.2017
решение хорошее, но когда я добавляю сообщение, оно скрывает кнопки
- person Shahid Ghafoor; 23.05.2018
Этот подход также не допускает никакого основного текста для диалогового окна, и если вам нужно более 3 кнопок действий в диалоговом окне, это, вероятно, просто создает плохой UX, и вам следует избегать этого. Другое дело, что наличие кнопок вместо элементов списка также имеет преимущества, такие как доступность «из коробки», единообразие тем в приложении и ОС и правильное разделение положительных/нейтральных и отрицательных вариантов — поэтому я считаю, что API построен так по причине (как ни странно).
- person milosmns; 24.07.2019
person
schedule
В чем разница с двумя верхними ответами?
- person FindOutIslamNow; 31.05.2018