我有两个使用相同TextWatcher的EditText视图 . 我可以逐个手动输入文本 . 这会触发每个输入的TextWatcher - 这很好 . 但是,还有一种方法可以更改这两个EditText视图中的文本 . 我希望这只能触发观察者一次,但目前它会被触发两次 . 我的代码看起来像这样 .
editText1.addTextChangedListener(myTextWatcher);
editText2.addTextChangedListener(myTextWatcher);
private void myMethod(String firstText, String secondText) {
editText1.setText(firstText); //This triggers watcher
editText2.setText(secondText); //And this triggers watcher once again
}
基本上,我想要做的是调用myMethod,然后在myMethod运行后让TextWatcher执行操作,并且editText1和editText2都已更改 . 但是,我仍然希望保持TextWatcher“听到”的能力,然后我手动将文本输入到这些EditTexts中的任何一个 . 我怎样才能做到这一点?
任何推动正确方向的人都会受到赞赏 .
2 回答
只需创建一个布尔值 -
和
现在在onTextChange方法中做
你可以试试这个
您可以先将
addTextChangedListener
设置为您的editext,而不是将myMethod
设置为addTextChangedListener
设置为您的edittext,如下面的示例代码EDIT
您需要在使用
setText
时取消注册TextWatcher
,然后根据您的要求重新注册 .