フォーカスが失われたときに電子メールやその他のものを検証するカスタム EditText を作成しています。有効でない場合はフォーカスを戻します。EditTextが1つしかない場合は正常に機能しますが、複数のEditTextがある場合、両方の検証をチェックしようとするため、editTextボックス間に無限に焦点が当てられます。これが私のサンプルコードです。
public void init(){
this.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
final MyEditText ed = MyEditText.this;
//...............check require field validation
if(!hasFocus && isRequire){
if(ed.getText().toString().length()<=0){
String msg = "Require Field";
v.clearFocus();
setErrorMsg(ed,msg);
return;
}
}else if(ed.getText().toString().length()>0){
ed.setError(null);
}
}
}
private void setErrorMsg(final EditText ed,String msg){
if(errorMessage!=null && errorMessage.length()>0){
msg = errorMessage;
}
ed.setError(msg);
ed.post(new Runnable() {
public void run() {
ed.requestFocus();
}
});
}