繁体   English   中英

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

[英]Trying to clear a TextWatcher every time it detects a certain string and continue reading the EditText

我有一个EditText,我希望在其中可以检测到用户何时输入标记的单词。 当检测到该单词时,按钮变为可见,并且用户具有更多选项。 我已经能够使用TextWatcher做到这一点。 问题是,每次TextTexter检测到标记的单词时,我都会存储在数组中使用的标记的单词。 但是,一旦单词在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;
            }

        }
    });

您能给我的任何帮助将不胜感激。 也许有完全不同的方式来完成此任务。

我知道了。 我只需要将tmp字符串分成子字符串,然后查看标志字是否包含在子字符串之一中而不是整个EditText中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM