我创建了一个带有TextEdit作为数字输入的Dialog,将其转换为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) 但这也不起作用。
感谢您的帮助
答案 0 :(得分:1)
如果您想要EditText
对象中的文本,则应使用以下代码行:
input.getText().tostring();
其中input
是EditText
- 对象。
使用代码
input.toString();
将为您提供对象的字符串表示形式,只要该对象不是null
,该对象的toString将不是null
,因此使用input.toString() != null
将不会给你任何有用的信息。
这意味着您应该进行以下验证:
if (input.getText().toString().trim().length() == 0)
以确定输入对象是否包含一些文本。
答案 1 :(得分:0)
试试这种方式..
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();
}
答案 2 :(得分:0)
input.toString()将返回Edittext的引用值,而不是Edittext中的文本。
使用以下条件
if(input.getText().toString() != null || !input.getText().toString().isEmpty())