我有一个EditText行,它使用setError代码来验证用户输入。如果EditText行留空并且用户试图离开Activity,则会在EditText行下方显示setError消息(图1)。
一旦用户开始在EditText行上添加文本,setError感叹号和消息就会按预期消失。但是,如果用户只是将焦点从EditText行移动到另一个EditText行,则会保留setError感叹号(图2)。
我希望感叹号在远离EditText行的任何焦点变化时消失。有关如何修复的任何想法?
部分活动文件:
...
public void onClickSave(View v) {
int stringToDo = cEditText.getText().toString().replace(" ", "").length();
if (stringToDo > 0) {
cEditText.setError(null);
Toast saveToast = Toast.makeText(this, "Clicked the SAVE Button", Toast.LENGTH_LONG);
saveToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
saveToast.show();
}
else {
cEditText.requestFocus();
cEditText.setError("Add a To Do Item");
}
}
答案 0 :(得分:1)
使用onFocusChanged侦听器,并根据焦点状态将错误设置为您需要的任何内容。 (null
摆脱它)
cEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// Sets the error message if the EditText has focus and removes it if it doesnt
cEditText.setError(hasFocus ? "Add a To Do Item" : null);
}
});
答案 1 :(得分:0)
在onClickSave(){}
之后在onCreate()中添加它cEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
cEditText.setError(null);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});