dismiss() 应该在 setPositiveButton 或 setNegativeButton 或其他 onClick 中的 onClick 中调用吗?
Should dismiss() be called in onClick in setPositiveButton or setNegativeButton or other onClick?
必须在 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。
如果您覆盖点击侦听器以防止对话框自动关闭(可能是因为您想在让对话框关闭之前验证一些数据),那么您将需要调用 dismiss。为此,您将覆盖 onStart 中的点击侦听器。
必须在 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。
如果您覆盖点击侦听器以防止对话框自动关闭(可能是因为您想在让对话框关闭之前验证一些数据),那么您将需要调用 dismiss。为此,您将覆盖 onStart 中的点击侦听器。