Как закрыть Android alertdialog
Я разрабатываю викторину, и мне нужно, чтобы пользователь отвечал на все вопросы перед продолжением. Когда пользователь не ответил на все вопросы, я показываю простой alertdialog, информирующий его или ее. Проблема в том, что я делаю. Я не могу заставить alertdialog закрыться. Почему не работает диалог dialog.cancel? Это код:
AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle("Unanswered Questions");
ad.setMessage("You have not answered all the questions.");
ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
ad.show();
Ответы
Ответ 1
Сам AlertDialog.Builder
не содержит AlertDialog.Builder
dismiss()
или cancel()
.
Это удобный класс, чтобы помочь вам создать диалог, который не имеет доступа к этим методам.
Вот пример:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alert = builder.create();
alert.show();
Затем вы можете вызвать метод alert.cancel()
для оповещения (не для разработчика).
Ответ 2
попробуйте использовать
dialog.dismiss()
вместо
dialog.cancel()
Ответ 3
поместите эту строку в OnCreate()
Context mcontext=this;
и они используют эту переменную в следующем коде
final AlertDialog.Builder alert = new AlertDialog.Builder(
mcontext);
alert.setTitle(title);
alert.setMessage(description);
alert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
}
});
alert.show();
Попробуйте этот код.. Он работает успешно.
Ответ 4
Используйте кнопку setNegative, нет кнопки "Положительно"! Я обещаю, что вы выиграете x
Ответ 5
AlertDialog.Builder ad = new AlertDialog.Builder(this);
ad.setTitle("Unanswered Questions");
ad.setMessage("You have not answered all the questions.");
ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
ad.show();
Ответ 6
Ответ на старый пост, но, надеюсь, кто-то может найти это полезным. Сделайте это вместо
final AlertDialog builder = new AlertDialog.Builder(getActivity()).create();
Вы можете продолжить и сделать,
builder.dismiss();
Ответ 7
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alert = builder.create();
alert.show();
Вышеприведенный код работает, но убедитесь, что вы сделали alert
глобальную переменную, чтобы вы могли получить ее из метода onClick.
Ответ 8
Я бы поставил
Log.e("SOMETAG", "dialog button was clicked");
до строки dialog.dismiss() в вашем коде, чтобы узнать, действительно ли он достиг этого раздела.
Ответ 9
Использовать диалог вместо AlertDialog
AlertDialog не имеет dismiss()
, но у AlertDialog есть некоторые методы для кнопки типа setPositiveButton()
.
Я рекомендую использовать диалог, если вы хотите настроить диалог.
Ответ 10
final AlertDialog.Builder alert = new AlertDialog.Builder(mcontext);
alert.setTitle(title);
alert.setMessage(description);
alert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
cancelDialog(); //Implement method for canceling dialog
}
});
alert.show();
void cancelDialog()
{
//Now you can either use
dialog.cancel();
//or dialog.dismiss();
}
Ответ 11
вы можете просто перезапустить действие, в котором отображается ваш alertdialog, или другое действие зависит от вашего решения.
если вы хотите перезапустить активность
использовать это
Конец();
startActivity (getIntent());
Ответ 12
alertDialog.setPositiveButton("SAVE",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/*Write your code here */
dialog.dismiss();
}
});
alertDialog.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
Ответ 13
Я попробовал решение PowerAktar, но AlertDialog и Builder всегда сохраняли отдельные части. Итак, как получить "истинный" AlertDialog?
Я нашел свои решения в show-Dialog: вы пишете
ad.show();
чтобы отобразить диалоговое окно. В помощь шоу говорится: "Создает AlertDialog с аргументами, предоставленными этому строителю, и диалоговым окном Dialog.show()". Итак, диалог, наконец, создан здесь. Результатом команды show() - является сам AlertDialog. Таким образом, вы можете использовать этот результат:
AlertDialog adTrueDialog;
adTrueDialog = ad.show();
С помощью этого adTrueDialog можно отменить()...
adTrueDialog.cancel()
или выполнить команду кнопок в диалоговом окне:
Button buttonPositive = adTrueDialog.getButton(Dialog.BUTTON_POSITIVE);
buttonPositive.performClick();
Ответ 14
На всякий случай, если кто-то ищет версию этого Kotlin, это выглядит следующим образом:
alertDialog.setPositiveButton(resources.getString(R.string.split_okay)) {
dialog, _ ->
dialog.dismiss()
}
Ответ 15
Если вы уже используете положительную и отрицательную кнопку (как в моем проекте), вы можете использовать кнопку "Нейтральная кнопка", чтобы закрыть диалоговое окно.
Я также заметил, что в версии Android > 5 диалог закрывается нажатием вне диалогового окна, но в старой версии этого не происходит.
ad.setNeutralButton("CLOSE", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// close dialog
}
});