2017-02-02 16 views
0

Я использую код fololowing для проверки на вход e-mailAndroid: проверка OnTextChanged электронной почты не работает, как ожидалось

private boolean validateEmail(String email) { 
     String emailPattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected]((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$"; 
     Pattern pattern = Pattern.compile(emailPattern); 
     Matcher matcher = pattern.matcher(email); 
     return matcher.matches(); 
    } 

я исполню это на onTextChanged. Код ниже (я использую)

@OnTextChanged(R.id.et_email) 
    public void checkCorrectEmail() { 
     if (!validateEmail(mEditTextEmail.getText().toString().trim())) { 
      isValidated = false; 
      mEditTextEmail.setError("Please enter email address"); 
      mEditTextEmail.requestFocus(); 
     } else { 
      isValidated = true; 
     } 
    } 

Проблема в том, что она недостаточно умна. Например, если я нахожу [email protected], он все еще показывает сообщение об ошибке. Однако, если я набираю [email protected], тогда space и щелкнул удалять space, тогда все в порядке, ошибка исчезла.

Раньше эта проверка была на onClick кнопки. Что я тут сделал?

+1

Рассмотрите возможность принятия ответа, если ему помогли !! – W4R10CK

ответ

3
@OnTextChanged(R.id.et_email) 
     public void checkCorrectEmail() { 
      if (!validateEmail(mEditTextEmail.getText().toString().trim())) { 
       isValidated = false; 
       mEditTextEmail.setError("Please enter email address"); 
       mEditTextEmail.requestFocus(); 
      } else { 
       isValidated = true; 
       mEditTextEmail.setError(null); 
      } 
} 

100% рабочий

+0

mEditTextEmail.setError (null); когда электронная почта действительна. – Gautam

1

Попробуйте это:

@OnTextChanged(R.id.et_email) 
public void checkCorrectEmail() { 
    if (!validateEmail(mEditTextEmail.getText().toString().trim())) { 
     isValidated = false; 
     mEditTextEmail.setError("Please enter email address"); 
     mEditTextEmail.requestFocus(); 
    } else { 
     mEditTextEmail.setError(null) 
     isValidated = true; 
    } 
} 

четкую ошибку на правильный вход

+1

Gautam также ответил то же самое время и его решение – d1vivek681065

+1

Разница во времени – Gautam

1

Используйте в-сборки Email шаблон метода проверки:

@OnTextChanged(R.id.et_email) 
public void checkCorrectEmail() { 
if (!Patterns.EMAIL_ADDRESS.matcher(mEditTextEmail.getText().toString()).matches()){ 
    isValidated = false; 
    mEditTextEmail.setError("Please enter a Valid E-Mail Address!"); 
    mEditTextEmail.requestFocus(); 
}else { 
    isValidated = true; 
    mEditTextEmail.setError(null); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^