每次检测到某个字符串时都尝试清除TextWatcher并继续读取EditText

时间:2012-04-11 15:05:25

标签: java android android-edittext textwatcher

我有一个EditText,我希望能够在用户输入标记的单词时检测到它。当检测到该单词时,按钮变为可见,用户有更多选项。我已经能够使用TextWatcher执行此操作。问题是我每次在Textwatcher检测到时都会存储数组中使用的标记字。但是一旦单词出现在EditText中,之后输入的每个字符都会使标记的单词再次输入到数组中,因为标记的单词仍在EditText中。我想知道,有没有办法清除TextWatcher,这样一旦我找到一个标记的单词,它就会开始只看我输入的内容之后呢?下面代码中的单词变量是存储程序检查的标记单词的位置。

    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;
            }

        }
    });

您可以给予我的任何帮助将不胜感激。也许有一些完全不同的方式来完成这项任务。

1 个答案:

答案 0 :(得分:1)

我明白了。我只需要将tmp字符串分解为子字符串,并查看标志字是否包含在其中一个子字符串中而不是整个EditText中。