如果输入为空,则带有EditText的java警报对话框将关闭
我有一个带有编辑文本的警报对话框。用户必须输入某些内容,若未输入,则系统应提醒用户需要此输入
这是Alter对话框的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Razlog storniranja?");
// Set up the input
final EditText input = new EditText(this);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setSingleLine(false);
input.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("Spremi", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("Otkaži", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (m_Text.length()==0)
{
input.setHint("Morate upisati razlog storniranja kartice (naloga)!");
input.setError("Upišite razlog storniranja!");
}
}
});
builder.show();
但当用户点击肯定按钮,输入为空时,对话框关闭。我的代码中是否缺少避免关闭对话框的内容
编辑
我想我找到了解决办法。最后一行builder.show();
应该删除,而应该添加这段代码:
builder.setView(input);
final AlertDialog alertDialog = builder.create();
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog = (input.getText().toString().trim().isEmpty());
// if EditText is empty disable closing on possitive button
if (!wantToCloseDialog) {
input.setHint("Morate upisati razlog storniranja kartice (naloga)!");
input.setError("Upišite razlog storniranja!");
alertDialog.dismiss();
}
}
});
我希望这能帮助其他人
# 1 楼答案
我不知道你想干什么
使用您的代码时出现的错误是:
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
m_Text
需要初始化如果m_Text未初始化,则在onDismiss方法上可能需要更改:
关于可取消的,您需要
builder.cancelable(false);
并且在需要时,builder.dismiss()
# 2 楼答案
使用
TextUtils.isEmpty()
检查empty
字符串试试这个:
希望这会有所帮助~