android edittext seterror,关于android:Edittext setError消失

博客讨论了一个关于Android EditText验证的问题,当输入字符达到限制时显示错误消息,但按下空格键后错误消息消失。问题出在TextWatcher的实现上,代码中的switch语句只检查了当前输入视图的ID,导致空格键触发验证时没有正确显示错误。解决方案可能涉及调整TextWatcher逻辑,确保在输入空格后仍能正确应用验证规则。
摘要由CSDN通过智能技术生成

我有一个Editext,在这里我执行的验证效果很好,但是在按空格时,msg出现了Disapper。任何人都可以指出我们做错了什么。

请找到下面的图片,以更清楚:

85c90cfee75c914b5bba82343cc3eb15.png

按下空格键后:

e625e773f2fbb1162f951263d16b6309.png

我们正在使用以下代码:

txtFullName.addTextChangedListener(new MyTextWatcher(txtFullName));

txtEmail.addTextChangedListener(new MyTextWatcher(txtEmail));

private class MyTextWatcher implements TextWatcher {

private View view;

private MyTextWatcher(View view) {

this.view = view;

}

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

public void afterTextChanged(Editable editable) {

switch (view.getId()) {

case R.id.txtFullName:

if (txtFullName.getText().toString().length() >= 10) {

txtFullName.setError(getString(R.string.limit_exceeds));

txtFullName.requestFocus();

}

break;

case R.id.txtEmail:

if (txtEmail.getText().toString().length() >= 20) {

txtEmail.setError(getString(R.string.limit_exceeds));

txtEmail.requestFocus();

}

break;

default:

break;

}

}

你应该做的是这样的

我希望我的editext不应超过10个字符...如果使用它会显示一些错误

可能重复的编辑文本最大长度并在texview中显示长度

原始答案

根据屏幕截图,输入的文本为10个字符。

按下空格键会将txtEmail.getText().toString().length()设置为11,再添加一个字符,并触发TextWatcher,仅当文本为10个字符或更短时,才会显示错误。 strike>

如果edittext值大于10,将显示错误消息

您是否要创建两个不同的实例TextWatchers? 每个EditText一个? 那里有些奇怪。 您正在从TextWatcher内部调用txtEmail和txtFullName,而没有作为参数或构造函数传递。 请粘贴所有代码

因此,您的逻辑仅基于其中一个视图,因为您正在执行switch (view.getId()),因此该视图始终是同一视图。

输入10个字符后会发生错误,出现msg错误消息;当我按下另一个字符时,将调用textwatcher,但如果按下"空格",则不会调用textwatcher,并且错误消息消失了

没有使用相同的TextWatcher,您只是在顶部添加了该代码。 有两个不同的TextWatcher实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值