sách gpt4 ăn đã đi

Android TextWatcher 触发

In lại 作者:搜寻专家 更新时间:2023-11-01 08:10:40 29 4
mua khóa gpt4 giày 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");

}
});
}

câu trả lời hay nhất

因为您的问题是针对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
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress