如果对话框被解除,我想为我的背景做一些事情。所以我想知道对话框是否被解雇
答案 0 :(得分:55)
您可以使用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()
答案 1 :(得分:2)
只是想补充说onDismissListener
仅在API 17
中引入。如果你试图支持更低的东西,你可以使用onCancelListener
,这不是很好但是包括像backButton这样的情况并在AlertDialog之外点击。
public Dialog createDialog() {
Dialog d = new Dialog(this);
d.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// do something
}
});
}
答案 2 :(得分:1)
我注意到,即使您选择了警报中的一个选项(是/否/中性按钮),也会调用onDismissListener
。对我来说onCancelListener
是最好的选择,因为我需要通过点击警报区域以外的方式跟踪明确关闭对话框。
答案 3 :(得分:0)
关闭对话框后,可以在以下代码中使用dialog.setOnDismissListener
,并使用更新的对话框代码。
private void ShowDialog() {
View view = LayoutInflater.from(ActivityMain.this).inflate(R.layout.dialog, null);
dialog = new Dialog(ActivityMain.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.addContentView(view, new RelativeLayout.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT));
Button dialogBtn = (Button) dialog.findViewById(R.id.button);
dialogBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(final DialogInterface arg) {
//when dialog closed
}
});
}