gpt4 book ai didi

android setError 方法干扰手动设置图标

转载 作者:行者123 更新时间:2023-11-30 01:35:36 28 4
gpt4 key购买 nike

我正在使用 setError 方法来显示当焦点从该字段移开时 EditText 字段是否被错误填充。如果它被正确填充,我会显示一个图标:drawable.validated 这是我的代码:

@Override
public void afterTextChanged(Editable s) {
zip.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
if (isValidZip(zip.getText().toString())) {
zip.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.validated, 0);
} else {
zip.setError(getString(R.string.zip_error));
}
}
}
});

问题是,setError 方法干扰了我手动设置图标。因此,即使字段已验证,我也看不到 drawable.validated 图标。

有关我何时收到错误的更多详细信息:

案例 1 我第一次正确填写了 EditText 字段 -> 我从该字段更改了焦点 -> 我可以看到 validated 图标。请参见以下屏幕截图:

enter image description here

CASE 2 我填写 EditText zip 字段不正确 -> 我将焦点更改为手机号码字段 -> 我在 zip 中看到错误field-> 回到 zip 字段并正确填写。 zip 中的错误消失了 -> 将焦点更改为手机号码字段 -> 现在我在 zip 字段中看不到 VALIDATED 图标,即使它已正确填写也是如此:

no-validation symbol shown

drawable.validated 是蓝色标记。

12345zip 字段

可能是什么问题以及如何解决?

最佳答案

首先,为什么每次文本更改时都setOnFocusChangeListener,不需要这样,设置一次即可。

我刚刚创建了测试项目并进行了测试,工作正常

mEditText = (EditText) findViewById(R.id.edit_text_input);
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
if (isValidZip(mEditText.getText().toString())) {
mEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_validated, 0);
} else {
mEditText.setError(getString(R.string.error_invalid_zip));
}
}
}
});
private boolean isValidZip(String s) {
return s.equals("correct");
}

按预期工作。我认为您的问题是每次文本更改时您都在设置更改监听器。

您可以尝试我的应用程序看它是否正常工作https://dropmefiles.com/a9ydI

这里是完整源码的链接

https://bitbucket.org/CROSP/testedittexterror/commits/all

关于android setError 方法干扰手动设置图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146105/

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