两个EditText同时设置TextChangedListener后,会使程序进入死循环,解决方法如下:
etExchangeRateEn = (EditText) findViewById(R.id.etExchangeRateEn);
etExchangeRateCn = (EditText) findViewById(R.id.etExchangeRateCn);
twEN = new TextWatcher()
{
@Override
public void afterTextChanged(Editable s)
{
etExchangeRateCn.addTextChangedListener(twCN);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
etExchangeRateCn.setText( "CN");
}
};
twCN = new TextWatcher()
{
@Override
public void afterTextChanged(Editable s)
{
etExchangeRateEn.addTextChangedListener(twEN);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
etExchangeRateEn.setText("EN");
}
};
etExchangeRateEn.addTextChangedListener(twEN);
etExchangeRateCn.addTextChangedListener(twCN);
本文详细介绍了在Android应用中遇到的EditText同时设置TextChangedListener引发的死循环问题,并提供了有效的解决方法。通过创建两个独立的TextWatcher实例,分别用于监听不同EditText的文本变化,并在相应的方法中实现互斥操作,从而避免了死循环的发生。
190

被折叠的 条评论
为什么被折叠?



