我在ListView的行中找到的EditText上执行空检查时遇到问题。基本上,每当我按下特定列表视图行中的milesEntry
按钮时,我想通过Integer.parseInt(((EditText) row.findViewById(R.id.milesEntry)).getText().toString());
从save
EditText视图中提取信息。当我用实际数据填写行中的milesEntry
EditText字段并执行解析时,一切正常,但如果我点击save
而不添加数据到milesEntry
字段我的应用程序崩溃。这是我的问题的调试代码
View row = entries.getChildAt(indexInAdapter - firstVisible);
int milesFromTheEditText;
EditText e = (EditText)row.findViewById(R.id.milesEntry);
if(e.getText().toString == null) {
System.out.println("ITS NULL");
}else if(e.getText().toString() == "") {
System.out.println("EMPTY STRING");
}else {
System.out.print("NEITHER");
问题在于,当我的应用程序“NEITHER”出现save
EditText字段为空时,我点击milesEntry
按钮,因为它既不是空字符串也不是空字符串,无法手动捕获导致我的应用程序崩溃的异常。
另外,我也没有在milesEntry
的初始化中设置任何文本。只是一个提示,设置为“Miles”。
编辑:已解决
我发现if(e.getText().toString().length == 0)
会抓住我的例外。
答案 0 :(得分:0)
这不正确!!!
if(e.getText().toString == null)
如果getText()
返回null
,您将获得NPE。正确的方法如下:
if (e.getText() == null || e.getText().toString() == null || e.getText().toString().length() == 0) {
...
}
答案 1 :(得分:0)
以这种方式使用:
String value = e.getText().toString();
if(value.length() > 0){
//DO
}else{
//DO
}
答案 2 :(得分:0)
"的EditText"可以是null对象。和
edittext.getText()
不能为null但可以为空字符串。
试试这个
if(e == null){
//EditText is null
}else{
String temp = e.getText().toString();
if(TextUtils.isEmpty(temp)){//check string is empty or not
//there is no data
}
}