Java 如何使用TextWatcher检查特定的字符串而不是一个字符?

Java 如何使用TextWatcher检查特定的字符串而不是一个字符?,java,android,android-edittext,textwatcher,Java,Android,Android Edittext,Textwatcher,我对Android和Java都是新手。我的应用程序需要能够在用户键入内容时检查用户正在键入的内容。如果用户键入已标记的预定单词,则需要在用户按下按钮之前发生事件。似乎最好的选择是TextWatcher和addChangedTextListener。我还没有弄明白如何让它检查字符序列(一个单词)。例如,当用户在edittext中键入“It is very warm”时,如果标记的单词是“very”,程序应该能够识别键入的“very”,并以某种方式提醒用户 我希望我能够在不使用任何代码的情况下清楚地

我对Android和Java都是新手。我的应用程序需要能够在用户键入内容时检查用户正在键入的内容。如果用户键入已标记的预定单词,则需要在用户按下按钮之前发生事件。似乎最好的选择是TextWatcher和addChangedTextListener。我还没有弄明白如何让它检查字符序列(一个单词)。例如,当用户在edittext中键入“It is very warm”时,如果标记的单词是“very”,程序应该能够识别键入的“very”,并以某种方式提醒用户


我希望我能够在不使用任何代码的情况下清楚地说明这一点。如能提供任何帮助,我们将不胜感激

我只举一个例子:

String word = "very";
int wordProgress = 0;

charTyped(char c) {
    if (c == word.charAt(wordProgress)) {
        wordProgress++;
        if (wordProgress >= word.length()) {
            AlertUserThatFlagWordWasTypedAndUseObjectiveCTypeMethodNamingSyntaxJustForFunBecauseIAmUsingObjectiveCAndIFindItQuiteAnoying(word);
        }
    }
}
这可能不是最好的方法,但却是最快、最有效的方法。如果你也在寻找插入符号位置的变化和退格,那么你必须修改它


一个更简单的版本,也可以使用退格和插入符号移动,但效率要低得多,就是在用户每次键入内容时检查整个文本区域是否包含单词。

这是通过TextWatcher执行操作的最简单形式。

String word = "very";

TextWatcher watcher = new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    public void afterTextChanged(Editable s) {
        String tmp = s.toString().trim().toLowerCase();
        if(tmp.contains(word.toLowerCase())){
            //inform the user here
        }
    }
};

非常感谢。所以我根本不需要一个TextWatcher,或者这应该包括在内吗?我从来没有使用过TextWatcher,但我猜从你的描述中,你会有一个类似于charTyped(charc)的方法。每次键入字符时都会调用该方法。那么,有没有一种方法可以修改此代码以同时检查几个标记的单词?我现在的问题是,我将有未知数量的标记词,可能存储在hashmap中,并且需要能够判断用户是否使用了这些词中的任何一个。是的,使用PostextChanged中的循环来处理多个词