我将FormEditText小部件用于表单(显然)。事情是:在测试无效一次后,即使输入正确的输入并且field.testValidity()
返回true,警告红色感叹号也不会消失。我还没有找到FormEditText
手动清除它的方法。
有人经历过这个吗?
这是我从操作栏中点按发送按钮时使用的方法:
public boolean checkFields() {
FormEditText[] allFields = { firstname, lastname, street, zip, city,
email, phone };
boolean allValid = true;
FormEditText firstFailedField = null;
for (FormEditText field : allFields) {
if (!field.testValidity()) {
Log.d("FOR", "failed field: " + field.getHint());
allValid = false;
if (firstFailedField == null) {
firstFailedField = field;
}
}
}
if (allValid) {
} else {
firstFailedField.requestFocus();
}
return allValid;
}
这是我布局的一部分:
<com.andreabaccega.widget.FormEditText
android:id="@+id/firstname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="Vorname"
android:inputType="textPersonName"
android:singleLine="true"
whatever:customRegexp="[a-zA-Z]{2,}"
whatever:emptyErrorString="Bitte Vornamen angeben"
whatever:testErrorString="Bitte Vornamen angeben"
whatever:testType="regexp" >
</com.andreabaccega.widget.FormEditText>
<com.andreabaccega.widget.FormEditText
android:id="@+id/lastname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="Nachname"
android:inputType="textPersonName"
android:singleLine="true"
whatever:customRegexp="[a-zA-Z]{2,}"
whatever:emptyErrorString="Bitte Nachnamen angeben"
whatever:testErrorString="Bitte Nachnamen angeben"
whatever:testType="regexp" >
</com.andreabaccega.widget.FormEditText>
我在名字字段中输入Kim,按下发送。在姓氏字段上发出警告。在姓氏字段中输入Jong,但感叹号不会隐藏。并且该领域的测试有效!
答案 0 :(得分:2)
根据建议,我会发表评论作为答案:
您可以尝试使用field.setError(null):这样您就可以隐藏EditText中的错误。它应该适用于FormEditText,因为FormEditText扩展了EditText。