android 上的文本更改侦听器

2023-12-23

我有一个情况,有两个字段。field1 and field2。我所想要的 要做的事是空的field2 when 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 to field1只是,但是当 我对应用程序崩溃的两个字段都执行了此操作。显然是因为他们试图改变 彼此无限期。一次field1改变它清除field2此时此刻field2已更改,因此会清除field1等等...

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


您可以添加一个检查,仅当字段中的文本不为空时(即长度不为 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 here http://developer.android.com/reference/android/text/TextWatcher.html.

还请尊重命名约定 http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 上的文本更改侦听器 的相关文章

随机推荐