DialogInterface.OnDismissListener.onDismiss() никогда не вызывается

Я создал диалог с AlertDialog.Builder и установил OnDismissListener, но onDismiss() никогда не вызывается, независимо от того, как я закрываю диалог. Мне нужно знать, когда пользователь закрыл диалоговое окно, коснувшись фона экрана.

В качестве альтернативы, я был бы рад сделать невозможным закрытие диалогового окна, касаясь фона экрана. Я думал, что Builder.setCancelable(false) сделает это, но это не так.


person Barry Fruitman    schedule 04.12.2014    source источник
comment
Опубликуйте код того, как вы настраиваете слушателя.   -  person Mus    schedule 04.12.2014
comment
Когда вы нажимаете за пределами диалогового окна, оно отменяет диалоговое окно, так что это то, с чем вам нужно иметь дело. Ни один из двух ответов, приведенных ниже, не сработал для меня, но этот сработал:   -  person ban-geoengineering    schedule 27.10.2017


Ответы (2)


Я считаю, что вы ищете:

dialog.setCanceledOnTouchOutside(false);
person tachyonflux    schedule 04.12.2014

Не видя вашего кода, я думаю, что вам нужно реализовать DialogInterface.OnCancelListener.

public class MyActivity extends Activity implements DialogInterface.OnCancelListener{
    @Override
    public void onCreate(Bundle state) {
       .....
       alertDialog.setOnCancelListener(this);
       alertDialog.show();
    }
    @Override
    public void onCancel(DialogInterface dialog) {
        dialog.dismiss();
        .....
    }
}
person mattdonders    schedule 04.12.2014