首页  >  文章  >  Java  >  将 TextChangeListener 与多个 EditText 字段一起使用时如何防止无限循环?

将 TextChangeListener 与多个 EditText 字段一起使用时如何防止无限循环?

Patricia Arquette
Patricia Arquette原创
2024-11-19 00:14:02129浏览

How to Prevent Infinite Loops When Using TextChangeListeners with Multiple EditText Fields?

具有多个EditText字段的Android文本更改监听器

在Android开发中,TextChangeListener允许开发者监听EditText字段文本内容的变化。但是,当使用多个 EditText 字段时,在修改一个字段的内容时清除另一个字段的内容需要仔细实现以避免无限循环。

问题:
提供的代码尝试清除 field2当 field1 更改时,反之亦然。然而,这会导致无限循环,因为每个字段都会触发另一个字段的更改事件,从而导致无休止的清除。

解决方案:
为了防止无限循环,需要进行检查应添加以确保仅清除非空字段。通过添加field1.addTextChangedListener和field2.addTextChangedListener,您可以监控这两个字段的变化。在每个监听器中,添加一个条件来检查 CharSequence 长度是否大于 0。如果是,则清除其他字段的内容。

修订的代码:

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("");
    }
});

通过确保仅清除非空字段,可以防止无限循环并允许用户一次仅将数据输入到一个字段中。

附加说明:
请记住遵循命名约定并使用适当的缩进以保持清晰。另外,请参阅 TextWatcher 的官方文档以了解更多详细信息。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn