我有一个情况,有两个字段。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(使用前将#替换为@)