首先看我的代码:
这些都在我的活动中;
EditText text1,text2; (Are defined corretly not problem)
text1.addTextChangedListener(new MyTextWatcher(onePercent));
text2.addTextChangedListener(new MyTextWatcher(twoPercent));
.. ..
.. ..
.. ..
private class MyTextWatcher implements TextWatcher {
private View view;
private MyTextWatcher(View view) {
this.view = view;
}
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{}
public void afterTextChanged(Editable editable) {
String text = editable.toString();
switch(view.getId()){
case R.id.dis_one_percent: (this is text1)
if(!text.equel(""))
text2.setText(Double.toString(text));
break;
case R.id.dis_one_number: (and text2)
if(!text.equel(""))
text1.setText(Double.toString(text+"LOL"));
}
}
}
目标:当用户在text1区域中输入某个值时,我想触发text2区域。但是当用户在text1区域输入值时,text2的MyTextWatcher被触发。存在无限循环。我该如何解决这个问题?
当您更改文本时,您需要删除文本更改侦听器。
public void afterTextChanged(Editable editable) {
text1.removeTextChangedListener(onePercent);
text2.removeTextChangedListener(twoPercent);
String text = editable.toString();
switch(view.getId()){
case R.id.dis_one_percent: (this is text1)
if(!text.equel(""))
text2.setText(Double.toString(text));
break;
case R.id.dis_one_number: (and text2)
if(!text.equel(""))
text1.setText(Double.toString(text+"LOL"));
}
text1.addTextChangedListener(new MyTextWatcher(onePercent));
text2.addTextChangedListener(new MyTextWatcher(twoPercent));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)