【问题标题】:How to get the View in TextWatcher method context?如何在 TextWatcher 方法上下文中获取视图?
【发布时间】:2014-05-16 23:01:54
【问题描述】:

我有一个处理程序是 TextWatcher,但我不知道如何获取已更改文本的 View

这是我的处理程序:

TextWatcher handler = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        oldText = s.toString();
    }

    @Override
    public void afterTextChanged(Editable s) {
        //v.setText("afterTextChanged");
    }
};

注意注释部分,这就是我想要的,从触发事件的EditText 中获取View,在文本更改后更改文本。

我怎样才能在 afterTextChanged 事件中达到这个.setText() 方法? (如 onClick 事件,视图为v

【问题讨论】:

  • 类 TW 实现 TextWatcher { public TW(View v) { ...
  • 我真的无法理解。但是我得到了“想法”,您能否发布一个包含示例类的答案,我可以实现包含此View v 的示例类?

标签: android events android-edittext listener textwatcher


【解决方案1】:

@Ion Aalbers 答案的 kotlin 版本

abstract class TextWatcherWithView(val view: TextInputEditText) : TextWatcher

【讨论】:

    【解决方案2】:
    public static class MyTextWatcher implements TextWatcher {
    
        private EditText mEditText;
    
        public MyTextWatcher(EditText editText) {
            mEditText = editText;
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            oldText = mEditText.toString();
        }
        ....
    }
    

    添加:

        mFirstEditText.addTextChangedListener(new MyTextWatcher(mFirstEditText));
    

    【讨论】:

    • TextFormatter 不应该是MyTextWatcher
    • 成功了!但我需要将TextFormatter 更改为MyTextWatcher 来编译它。
    • 这被认为是“泄漏”吗?有一些建议不要传递Context,我认为传递EditText,...是间接传递Context,因为我们可以轻松调用getContext()
    猜你喜欢
    • 2012-10-18
    • 2014-06-30
    • 1970-01-01
    • 2018-09-02
    • 2015-06-10
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多