gpt4 book ai didi

java - android on Text Change Listener

转载 作者:IT老高 更新时间:2023-10-28 12:16:09 28 4
gpt4 key购买 nike

我有一个情况,有两个字段。 field1field2。我所想要的当 field1 改变时, to do 为空 field2,反之亦然。所以只在最后一个字段上有内容。

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 更改,此时它会清除 field2field2 已更改,因此它将清除 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 .

也请尊重 naming conventions .

关于java - android on Text Change Listener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824634/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com