java - 同时监听多个edittext后 代码执行的次数
ringa_lee
ringa_lee 2017-04-17 16:48:10
[Java讨论组]

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    et1=(EditText) findViewById(R.id.et1);
    et2=(EditText) findViewById(R.id.et2);
    EditText[] arr=new EditText[]{et1,et2};
    for (int i = 0; i < arr.length; i++) {
        arr[i].addTextChangedListener(new NewTextWatcher(arr[i]));
    }
}
class NewTextWatcher implements TextWatcher{
    private EditText editText;
    
    
    public NewTextWatcher(EditText editText) {
        this.editText = editText;
        
    }

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

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        
    }

    @Override
    public void afterTextChanged(Editable s) {
        String msg4=editText.getText().toString();
        System.out.println(msg4);
        
    }
}

这个代码执行的时候上下两个edittext 在第一个edittext中输入后 在logcat中只有一条输出 但是在第二个edittext中输入一个数字之后 就会在logcat中输入两个日志 被执行了两次

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
黄舟

我不太清楚原因,从代码上看没什么问题,afterTextChanged会在输入后触发,setText执行后触发。
其次如果存在EditText addTextChangedListener 执行两次也会执行,因为addTextChangedListener 为add,里面是一个list,可以存在多个,不像onclick是单个的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号