我编写了这个简单的表单验证器,以查看EditText字段是否为空。我从一个片段调用这个方法,但它似乎总是传递if语句,即使它是空的。这是我的代码:
private boolean checkForm() {
boolean returnValue = false;
View[] view1;
view1 = new View[] {(EditText) rootView.findViewById(R.id.name),
(EditText) rootView.findViewById(R.id.companyname),
(EditText) rootView.findViewById(R.id.email),
(EditText) rootView.findViewById(R.id.website),
(EditText) rootView.findViewById(R.id.other),
(EditText) rootView.findViewById(R.id.whichelements)
};
for(View item : view1)
{
if(item.toString().trim().length() > 0){
returnValue = true;
}
else
{
returnValue = false;
break;
}
}
return returnValue;
}
当我调试时,它也说字符串为空,你可以在mTransformed:http://gyazo.com/cfd58bc075b5cfbf01c0bce5f8702a15
看到这里为什么条件总是为真,即使字符串不为空? String.Equals()也不起作用
答案 0 :(得分:1)
它是因为item.toString()
没有返回EditText
的内容
for(View item : view1) {
if (TextUtils.isEmpty(((TextView)view).getText().toString())) {
return false;
}
}
return true;
答案 1 :(得分:-1)
我认为因为这个布尔变量基于最后一个View。 并且您需要getTex()方法来获取EditText中的文本