2016-04-16 7 views
0

私は現在のパスワードEditTextとエラーメッセージTextViewを表示しています。 EditTextの内容が変更されたときに、通常、ユーザーが別の文字を入力するか、何かを消去したときにエラーメッセージをクリアしたい。TextWatcherメソッド内からTextViewをクリアする

システムがメッセージを出力してもエラーTextViewがクリアされていません。 TextViewは、EditTextがフォーカスを失ったときにのみクリアされます。

どうしてですか?これらのメソッドは別のスレッドで実行されていますか?ユーザーが文字を入力した直後にTextViewをクリアするにはどうすればよいですか?

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

私はすでに、すべての3つの方法でそれを試みたのEditTextがフォーカスを失った後も同じことが起こるonTextChanged()メソッド –

+0

@VivekMishraに...、TextViewにのみクリアされません。 –

+0

しかし私は持っています。 'mCurrentPasswordErrorTextView.setText(" ");'これはTextViewをクリアするための私の行です。 –

答えて

1

解決策は非常に奇妙です。私はこれがバグだと思う!

TextViewを空の文字列 ""で置き換える代わりに、余分なスペースを入れてテキストを直ちにクリアしました! * 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

を掲示するべきです。実際にはこれは解決策ではありません。 '' '' textはあなたがテキストをクリアしなかったことを意味します。空白のテキストを設定しました。あなたのコードを質問から実行するとうまくいきました。そのようなバグが起きたときにデバイス/ Android OSのバージョンを投稿できますか? – jakubbialkowski

+0

5.0.2のapi 21でバグが発生します。私はAsus Zenfone 2 Laserで実行しています。 –

関連する問題