必须在onClick中调用dismiss()吗?
如果我没有调用dismiss(),对话框仍然可以关闭。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
Bundle args = getArguments();
if (args.containsKey(ARG_MESSAGE_INT)) {
builder.setMessage(args.getInt(ARG_MESSAGE_INT));
} else if (args.containsKey(ARG_MESSAGE_STRING)) {
builder.setMessage(args.getString(ARG_MESSAGE_STRING));
}
if (args.containsKey(ARG_TITLE_INT)) {
builder.setTitle(args.getInt(ARG_TITLE_INT));
} else if (args.containsKey(ARG_TITLE_STRING)) {
builder.setTitle(args.getString(ARG_TITLE_STRING));
}
builder
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (null != buttonOnClickListener)
buttonOnClickListener.onPositiveClick();
}
}
)
.setNegativeButton(R.string.alert_dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (null != buttonOnClickListener)
buttonOnClickListener.onNegativeClick();
}
}
);
return builder.create();
}
最佳答案
如果使用构建器创建对话框并在其中设置您的侦听器,则单击任何按钮将自动关闭该对话框,您无需调用dismiss。
如果您覆盖了Click侦听器以防止对话框自动关闭(可能是因为您想要在放开对话框之前验证一些数据),则需要调用dismiss。为此,您将在onStart中覆盖单击侦听器。