我有一个监听文本变化的EditText:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
// do stuff
}
});到目前为止,这个方法工作得很好,如果我在EditText中输入一些内容,afterTextChanged()中的内容就会被执行。现在,在同一个活动中,我有一个可以更改EditText中的字符串的ToggleButton。如何防止由于触发"afterTextChanged“的ToggleButton而导致此文本更改?
PS:不确定这是否相关,但具体来说,我有一个接受小数或小数(例如"0.75“或"3/4")的EditText,切换按钮应该在小数和小数显示之间切换,但不应该触发"afterTextChanged”中的任何东西,因为值保持不变(3/4=0.75)。
发布于 2015-10-21 19:23:36
在我看来,有两种可能性:
注册/注销listener
的
标志示例:
public class MainActivity extends AppCompatActivity{
boolean automaticChanged = false;
ToggleButton toggleButton;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//...
toggleButton.setOnClickListener(onClickListener);
editText.addTextChangedListener(textWatcher);
//...
}
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!automaticChanged) {
// do stuff
} else {
automaticChanged = false;
}
}
};
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v)
{
automaticChanged = true;
// do stuff
}
};
}
}https://stackoverflow.com/questions/33257937
复制相似问题