首页 > Java > java教程 > 在文本更改时清除 EditText 字段时如何防止无限循环?

在文本更改时清除 EditText 字段时如何防止无限循环?

Barbara Streisand
发布: 2024-11-20 12:19:09
原创
278 人浏览过

How to Prevent Infinite Loop When Clearing EditText Fields on Text Change?

android on Text Change Listener

这个问题寻求一种解决方案,以防止在将文本更改侦听器应用于两个 EditText 字段时出现无限循环,字段 1 和字段 2。当 field1 中的文本更改时,field2 应该被清除,反之亦然。

最初的实现涉及将 TextWatchers 附加到两个字段,其中,当 field1 中的文本更改时,field2 将被清除,反之亦然。但是,由于字段试图无限期地相互更改,这导致了崩溃。

解决方案:

为了防止无限循环,可以添加一个检查TextWatchers 仅在文本不为空时(即长度不为 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("");
   }
  });
登录后复制

此方法确保当 field1 发生变化并有文本时,它会清除 field2。同样,field2 仅在其文本不为空时才清除 field1。因此,在实现所需行为的同时避免了无限循环。

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

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