如何知道Android中的对话框是否被解除?

Mar*_*hen 27 android dialog dismiss

如果对话框被解除,我想为我的背景做一些事情.所以我想知道对话框是否被解雇

Ken*_*olf 60

你可以使用 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;
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用DialogFragment刚覆盖onDismiss()

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

  • @JoeBlow当旋转设备并重新调用活动`onCreate`时,`Bundle savedInstanceState`将不等于`null`.您可以在`onsaveInstanceState`中存储任何状态(例如,对话框在设备旋转之前显示的布尔值)并在此处引用它. (3认同)
  • 太棒了但是它没有得到设备被旋转的情况 - 这会杀死对话。有任何想法吗? (2认同)

xem*_*bra 6

@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
        }
    });
}
Run Code Online (Sandbox Code Playgroud)