2016-07-25 3 views
0

Ich habe ein TextInputLayout wie diesesFehler bei TextInputLayout Dont zeigen wieder einmal setErrorEnabled nennen (true)

<android.support.design.widget.TextInputLayout 
      android:id="@+id/input_layout_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:id="@+id/edt_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="@string/title_what_should_we_call_you" /> 

</android.support.design.widget.TextInputLayout> 

Für gültigen Namen, wenn tippen Sie auf Schaltfläche Senden Ich benutze

private boolean validateName() { 
     if (edtName.getText().toString().trim().isEmpty()) { 
      inputLayoutName.setErrorEnabled(true); 
      inputLayoutName.setError("Enter name");  
      return false; 
     } else { 
      inputLayoutName.setErrorEnabled(false); 
     } 
     return true; 
} 

Als ich app laufen, Geben Sie keinen Wert zum Namen ein und tippen Sie auf Senden, um den Fehler anzuzeigen (korrigieren).
Dann gebe ich einen gewissen Wert zu nennen -> tap Senden -> der Fehler ausblenden (korrekt)
Aber dann lösche ich alle Namen -> tippen Senden -> die Fehler

gezeigt nicht, warum es passiert? Jede Hilfe oder Anregung wäre sehr geschätzt.

Wenn ich nicht setErrorEnabled(false); verwenden Sie und nur gesetzte Fehlermeldung auf null, der Blick auf Fehlermeldung unsichtbar noch nicht gegangen

+0

Wird ein Fehler beim Aktivieren/Deaktivieren wirklich benötigt? – Shaishav

+0

@Shaishav Wenn ich nicht setErrorEnabled (false); und nur Fehlermeldung auf Null gesetzt, die Ansicht der Fehlermeldung immer noch nicht verschwunden –

+0

Uh ... Ich benutze nur den Fehler mit der Funktionalität nur, wenn etwas mit der Eingabe nicht stimmt. Wenn alles in Ordnung ist, rufe ich 'setError()' einfach nicht auf. Warum müssen Sie 'setError (null)' aufrufen? – Shaishav

Antwort

0

ich eine Probe dies zu testen gemacht und alles, was ich tun musste, war:

if (edtName.getText().toString().trim().isEmpty()) { 
     inputLayoutName.setError("Enter name");  
     return false; 
} else { 
     inputLayoutName.setErrorEnabled(false); 
} 

return true; 

Die Fehler werden wieder angezeigt, wie in Ihrem Anwendungsfall sollte. Können Sie das bitte überprüfen?

Verwandte Themen