从TextWatcher方法中清除TextView

时间:2016-04-16 18:43:55

标签: java android events android-edittext

我有一个“当前密码”EditText和一个显示错误消息的错误TextView。我希望在EditText内容发生变化时清除错误消息,通常是当用户输入另一个字母或删除某些内容时。

即使系统打印消息,也不会清除错误TextView。只有在EditText失去焦点时才会清除TextView。

为什么会这样?这些方法是否在不同的线程上执行?用户输入字符后,如何立即清除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("");
        }
    });

1 个答案:

答案 0 :(得分: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(" ");
    }
});