Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图在每次检测到某个字符串时清除TextWatcher并继续读取EditText_Java_Android_Android Edittext_Textwatcher - Fatal编程技术网

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

Java 试图在每次检测到某个字符串时清除TextWatcher并继续读取EditText,java,android,android-edittext,textwatcher,Java,Android,Android Edittext,Textwatcher,我有一个EditText,我希望能够在其中检测用户何时键入带标记的单词。当检测到该单词时,按钮将变为可见,用户有更多选项。我已经能够用一个文本观察者来做这件事了。问题是,每次Textwatcher检测到标记字时,我都会将其存储在数组中。但一旦单词出现在EditText中,随后输入的每个字符都会导致标记的单词再次输入数组,因为标记的单词仍在EditText中。我想知道,有没有办法清除TextWatcher,这样一旦我找到一个标记的单词,它就会开始只监视我在那之后键入的内容?下面代码中的单词变量是存

我有一个EditText,我希望能够在其中检测用户何时键入带标记的单词。当检测到该单词时,按钮将变为可见,用户有更多选项。我已经能够用一个文本观察者来做这件事了。问题是,每次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;
            }

        }
    });

如果你能给我任何帮助,我将不胜感激。也许有完全不同的方法来完成这项任务。

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