我创建了一个带有 TextEdit 作为数字输入的对话框,以将其转换为 double 值。 我想通过检查 TextEdit 输入是否为空来防止异常,但它总是跳转到 else 语句,因此在 EditText 为空时创建异常。
final Builder builder = new Builder(this);
final EditText input = new EditText(this);
input.setKeyListener(DigitsKeyListener.getInstance(false, true));
builder
.setTitle(R.string.dialog_title_addmark)
.setMessage(R.string.dialog_addmark)
.setView(input)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (input.toString().trim().length() == 0) {
Toast.makeText(Marks.this, R.string.input_empty, Toast.LENGTH_SHORT).show();
} else {
Double value = Double.valueOf(input.getText().toString());
db.insertMark(selection, value);
getData();
}
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
我也试过检查 (input.toString() != null) 但这也不起作用。
谢谢你的帮助
最佳答案
如果您想要来自 EditText
对象的文本,您应该使用以下代码行:
input.getText().tostring();
其中 input
是一个 EditText
对象。
使用代码
input.toString();
将为您提供对象的字符串表示形式,只要该对象不是 null
,该对象的 toString 就不会是 null
,因此使用 input.toString() != null
不会给你任何有用的信息。
这意味着您应该进行以下验证:
if (input.getText().toString().trim().length() == 0)
判断输入对象是否包含一些文本。
关于android - AlertDialog EditText 输入验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996863/