首页 > Java > java教程 > 在 Android EditText 字段中使用 TextWatchers 时如何防止无限循环?

在 Android EditText 字段中使用 TextWatchers 时如何防止无限循环?

DDD
发布: 2024-11-12 09:41:02
原创
209 人浏览过

How to Prevent an Infinite Loop When Using TextWatchers in Android EditText Fields?

Android EditText 字段的文本更改侦听器

问题:

在 Android 应用程序中,您希望确保在任何给定时间只有两个 EditText 字段(field1 和 field2)中只有一个可以包含内容。当用户更改 field1 中的文本时,field2 应该被清除,反之亦然。

但是,向这两个字段添加 TextWatcher 会导致应用程序崩溃,因为每个字段都会触发另一个字段的无限循环。

解决方案:

要解决此问题,请在 TextWatcher 的 onTextChanged 方法中添加一个检查,以仅在其他字段具有非空内容时清除该字段。以下是修改后的代码:

field1.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {}

    @Override
    public void beforeTextChanged(CharSequence s, int start,
            int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start,
            int before, int count) {
        if (s.length() != 0)
            field2.setText("");
    }
});

field2.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {}

    @Override
    public void beforeTextChanged(CharSequence s, int start,
            int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start,
            int before, int count) {
        if (s.length() != 0)
            field1.setText("");
    }
});
登录后复制

通过此修改,当用户在当前字段中输入内容时,应用程序只会清除另一个字段,确保一次只有一个字段有内容。

以上是在 Android EditText 字段中使用 TextWatchers 时如何防止无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板