gpt4 book ai didi

Android TextWatcher 触发

转载 作者:搜寻专家 更新时间:2023-11-01 08:10:40 29 4
gpt4 key购买 nike

我有一个 Android 编程问题。使用下面的代码我想验证一个字符串匹配。它验证正常,但 LogCat 显示 TextWatcher 方法在每次击键时触发两次,我不明白为什么。我希望每次击键只触发一次。

你知道它为什么这样做吗?

我认为这可能是因为我更改了文本的颜色,但在将其注释掉后并没有什么不同。

LogCat 输出

03-31 03:37:25.269: I/BeforeText(676): Hit 
03-31 03:37:25.269: I/OnText(676): Hit
03-31 03:37:25.269: I/AfterText(676): Hit
03-31 03:37:25.274: I/InvalidText(676): Incorrect Text.
03-31 03:37:25.274: I/Text Value(676): a
03-31 03:37:25.404: I/BeforeText(676): Hit
03-31 03:37:25.404: I/OnText(676): Hit
03-31 03:37:25.404: I/AfterText(676): Hit
03-31 03:37:25.404: I/InvalidText(676): Incorrect Text.
03-31 03:37:25.404: I/Text Value(676): a

Activity 代码

public void onCreate(Bundle savedInstanceState) {

//...omitted

//Create Answer Field
textField = (EditText)this.findViewById(R.id.textField);

//Add validation to TextField
textField.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s){

Log.i("AfterText","Hit");

if(textField.getText().toString().trim().equalsIgnoreCase("hello")){
Log.i("ValidText", "Text matched.");

answerField.setTextColor(Color.GREEN);

}
else{
Log.i("InvalidText", "Incorrect text.");
Log.i("Text Value", textField.getText().toString());

textField.setTextColor(Color.RED);

}
}

public void beforeTextChanged(CharSequence s, int start, int count, int after){
//Do nothing
Log.i("BeforeText", "Hit");
}

public void onTextChanged(CharSequence s, int start, int before, int count){
//Do nothing
Log.i("OnText","Hit");

}
});
}

最佳答案

因为您的问题是针对TextWatcher 方法每次击键触发两次。您已将 TextWather 用于 Make watch on EditText 以验证字符串并设置颜色。

您可以在此处引用开发者网站中的 TextWatcher 文档。 http://developer.android.com/reference/android/text/TextWatcher.html .

当您按下 keystore 时,它会以调用 TextWatcher 方法 onTextChanged 的方式更改 EditText 文本,当您按下 EditText 方法 beforeTextChanged 的任意键时,这将调用我们开始编辑 EditText。

还有一件事是,当您在 EditText 中输入一个字符时,它将调用 Textwather 的所有这三个方法。只是调用的顺序不同。并且还引用了这个 SO 问题 Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged

所以没有错会在EditText中调用两次Text Change。

希望你明白。

关于Android TextWatcher 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com