我正在使用AlertDialog构建器从用户那里获取一些输入,我在其中编写了一个小的验证,如:如果EditText为空,则显示SnackBar并且不关闭对话框。
当用户离开EditText并点击“正面”按钮,在Snackbar中收到消息但关闭对话框时,会发生什么事。
那么如何控制关闭AlertDialog,如果条件失败,这里是代码:
public void inputDialog() {
LayoutInflater layoutInflaterAndroid = LayoutInflater.from(context);
final View mView = layoutInflaterAndroid.inflate(R.layout.layout_dialog, null);
final AlertDialog.Builder alertDialogBuilderUserInput = new AlertDialog.Builder(context);
acceptUserInput = (EditText) mView.findViewById(R.id.acceptUserInput);
alertDialogBuilderUserInput.setView(mView);
alertDialogBuilderUserInput
.setCancelable(false)
.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogBox, int id) {
// ToDo get user input here
String strUserInput = acceptUserInput.getText().toString().trim();
if(TextUtils.isEmpty(strUserInput)) {
Snackbar snackbar = Snackbar.make(mView, "Name field cannot be left blank", Snackbar.LENGTH_LONG);
snackbar.show();
return;
}
}
})
.setNegativeButton("CLOSE",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogBox, int id) {
dialogBox.cancel();
}
});
AlertDialog alertDialogAndroid = alertDialogBuilderUserInput.create();
alertDialogAndroid.show();
}
答案 0 :(得分:0)
您可以按如下方式设置onShowListener:
{{1}}
答案 1 :(得分:0)
AlertDialog.Builder mDialog = new AlertDialog.Builder(
MapActivity.this);
AlertDialog mAlertDialog = mDialog.create();
mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button b = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Do something
mEdt.setText("message");
}
});
}
});
mAlertDialog.show();
答案 2 :(得分:0)
根据您的问题,工作解决方案如下: -
Team