文字变更监听器上的android

发布于 2021-02-02 22:54:35

我遇到的情况是有两个领域。field1和field2。field2当field1更改时,我只想做空,反之亦然。因此,最后只有一个字段具有内容。

field1 = (EditText)findViewById(R.id.field1);
field2 = (EditText)findViewById(R.id.field2);

field1.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {}

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

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      field2.setText("");
   }
  });

field2.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {}

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

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
     field1.setText("");
   }
  });

如果仅附加addTextChangedListener到它,效果很好field1,但是当我对两个字段都执行此操作时,应用程序将崩溃。显然是因为它们试图无限期地改变彼此。一旦field1更改,field2此刻 清除就会field2被更改,因此它将清除field1,依此类推…

有人可以提出任何解决方案吗?

关注者
0
被浏览
363
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你可以添加一个检查以仅在字段中的文本不为空时(即,长度不为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("");
       }
      });
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看