Ok, ich habe nur ein EditText-Feld und eine Schaltfläche, die beim Drücken eine AsyncTask auslöst.
EditText playerName = (EditText)findViewById(R.id.playerEditText);
if(playerName.getText().toString().length() == 0 )
playerName.setError("Player name is required!");
else {
// do async task
}
Das Problem ist, dass die Fehlermeldung auch dann noch angezeigt zu werden scheint, wenn ich gültigen Text für die Suche eingebe. Gibt es eine Möglichkeit, den Fehler zu beheben, sobald der EditText nicht leer ist?
TextWatcher
and override-afterTextChanged
Methode verwenden.API-Dokumentation: "Das Symbol und die Fehlermeldung werden auf null zurückgesetzt, wenn wichtige Ereignisse Änderungen am Text von TextView verursachen." Obwohl es nicht so ist - und deshalb können wir dies als Fehler betrachten.
Wenn Sie inputType wie textNoSuggestions, textEmailAddress, textPassword verwenden, wird der Fehler nach der Eingabe eines Zeichens deaktiviert. Fast wie dokumentiert, aber auch hier nicht genau - wenn Sie ein Zeichen löschen, bleibt der Fehler bestehen. Es scheint, dass eine einfache Problemumgehung mit addTextChangedListener und setError (null) das versprochene Verhalten erreichen kann.
Außerdem gibt es Beiträge über Symbolverlust auf Android 4.2. Also vorsichtig verwenden.
quelle
inputType
und nur dann auf, wenn ich ein einzelnes Zeichen eingebe. Nach der zweiten ZeicheneingabeEditText
verhält sich das wie erwartet und der Fehler verschwindet. Diese Inkonsistenz ähnelt eher einem Fehler.Versuchen Sie diesen Hörer:
playerName.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable edt){ if( playerName.getText().length()>0) { playerName.setError(null); } }
quelle
Wenn Sie die Fehlermeldung auf eine Weise ausblenden möchten, wenden Sie onclicklistener auf das Bearbeitungsfeld an und dann
editTextName.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub editTextName.setError(Null) } });
quelle
editTextName
stattdessen versuchen .EditTextname
genau auf seiner Linie berührt ... Weniger Chance, dass dies passiert. (Oh, dieser Name bringt mich zum Erbrechen !!!!!)Der folgende Code hat bei mir funktioniert
@OnTextChanged( value = R.id.editTextName, callback = OnTextChanged.Callback.TEXT_CHANGED) public void afterInput(CharSequence sequence) { editTextName.setError(null); editTextName.setErrorEnabled(false); }
'
quelle
Fügen Sie Ihrem EditText und onError einen TextWatcher hinzu, und zeigen Sie Ihre Fehlermeldung an. Andernfalls
et.setError(errorMessage)
können Sie die Fehlermeldung und das Fehlersymbol wie unten entfernen.// to remove the error message in your EditText et.setError(null); // to remove the error icon from EditText. et.setCompoundDrawables(null, null, null, null);
quelle