我有一个 EditText,我希望能够在其中检测用户何时输入标记的单词。当检测到这个词时,一个按钮变得可见,用户有更多的选择。我已经能够使用 TextWatcher 做到这一点。问题是,每次 Textwatcher 检测到它时,我都会存储在数组中使用的标记词。但是一旦单词在 EditText 中,之后输入的每个字符都会导致标记的单词再次输入到数组中,因为标记的单词仍在 EditText 中。我想知道,有没有办法清除 TextWatcher,这样一旦我找到一个标记的单词,它就会开始只关注我之后输入的内容?下面代码中的 word 变量是程序正在检查的标记词的存储位置。
txtMessage.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
String tmp = s.toString().trim().toLowerCase();
if (flagged == true) {
CheckWords.setVisibility(0);
}
if (tmp.contains(word.toLowerCase())) {
flagwordsused[i] = word;
//txtPhoneNo.setText(""+tmp);
i++;
flagged = true;
}
}
});
您能给我的任何帮助将不胜感激。也许有一些完全不同的方式来完成这项任务。