Подтвердить что ты не робот

Как закрыть 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(); 
4b9b3361

Ответ 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
    }
});