フォームには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 と入力しますが、感嘆符は隠れません。そして、フィールドは有効なテストを行います!