文字变更监听器上的android

我遇到的情况是有两个领域。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时)清除。

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 的全部内容, 来源链接: utcz.com/qa/409029.html

回到顶部