Как узнать, отклонен ли диалог на Android?

Если диалог отклонен, я хочу сделать что-то для своего фона. Поэтому я хочу знать, отклонен ли диалог

Ответы

Ответ 1

Вы можете использовать onDismissListener

http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html

public Dialog createDialog() {
    Dialog d = new Dialog(this);
    d.setOnDismissListener(new OnDismissListener() {
        @Override
        public void onDismiss(final DialogInterface arg0) {
            // do something
        }
    });
    return d;
}

Если вы используете DialogFragment просто переопределить onDismiss()

http://developer.android.com/reference/android/app/DialogFragment.html#onDismiss (android.content.DialogInterface)

Ответ 2

@Ken Wolf имеет отличный ответ на этот вопрос.

Просто хотел добавить, что onDismissListener был введен только в API 17. Если вы пытаетесь поддержать что-то ниже, вы можете использовать onCancelListener, что не так хорошо, но охватывает такие случаи, как backButton и выстукивание вне AlertDialog.

http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html#onCancel(android.content.DialogInterface)

public Dialog createDialog() {
    Dialog d = new Dialog(this);
    d.setOnCancelListener(new DialogInterface.OnCancelListener() {
        @Override
        public void onCancel(DialogInterface dialog) {
            // do something
        }
    });
}