2016-04-16 14 views
0

Ich habe ein "aktuelles Passwort" EditText und ein Fehler TextView, die eine Fehlermeldung anzeigt. Ich möchte die Fehlermeldung löschen, wenn sich der EditText-Inhalt ändert, normalerweise, wenn der Benutzer einen anderen Buchstaben eingibt oder etwas löscht.Clear TextView von innerhalb der TextWatcher-Methode

Der Fehler TextView wird nicht gelöscht, obwohl das System die Nachrichten druckt. Die Textansicht wird nur gelöscht, wenn der EditText den Fokus verliert.

Warum passiert das? Werden diese Methoden in einem anderen Thread ausgeführt? Wie soll ich das TextView sofort löschen, nachdem der Benutzer ein Zeichen eingegeben hat?

mCurrentPasswordEditText = (EditText) view.findViewById(R.id.current_password_edit_text); 
    mCurrentPasswordErrorTextView = (TextView) view.findViewById(R.id.current_password_error_text_view); 
    mCurrentPasswordEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      //mCurrentPasswordErrorTextView.setText(""); 
     } 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      //mCurrentPasswordErrorTextView.setText(""); 
     } 
     @Override 
     public void afterTextChanged(Editable s) { 
      System.out.println("called multiple times."); 
      mCurrentPasswordErrorTextView.setText(""); 
     } 
    }); 
+0

tun, dass in OnTextChanged() -Methode –

+0

@VivekMishra das gleiche passiert .. Ich versuchte es bereits in allen drei Methoden, die Textview erst nach dem EditText Fokus verliert gelöscht wird. –

+0

Aber ich habe. 'mCurrentPasswordErrorTextView.setText (" ");' das ist meine Zeile zum Löschen der TextView. –

Antwort

1

Die Lösung ist sehr seltsam. Ich denke, das ist ein Fehler!

Anstatt die TextView durch eine leere Zeichenfolge "" zu ersetzen, habe ich ein extra Leerzeichen "" eingefügt, das den Text sofort löschte! * Smh

mCurrentPasswordEditText = (EditText) view.findViewById(R.id.current_password_edit_text); 
mCurrentPasswordErrorTextView = (TextView) view.findViewById(R.id.current_password_error_text_view); 
mCurrentPasswordEditText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     //mCurrentPasswordErrorTextView.setText(""); 
    } 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     //mCurrentPasswordErrorTextView.setText(""); 
    } 
    @Override 
    public void afterTextChanged(Editable s) { 
     mCurrentPasswordErrorTextView.setText(" "); 
    } 
}); 
+0

Eigentlich ist dies keine Lösung, Einstellung '' '' Text bedeutet, dass Sie den Text nicht gelöscht haben. Sie haben gerade Leerzeichen festgelegt. Ich führe deinen Code aus Frage und es hat funktioniert, also könntest du die Version des Geräts/Android-Betriebssystems posten, wenn ein solcher Fehler auftritt? – jakubbialkowski

+0

Der Fehler passiert in 5.0.2 api 21. Ich benutze es auf einem Asus Zenfone 2 Laser. –