簡體   English   中英

Android:OnTextChanged電子郵件驗證無法正常工作

[英]Android: OnTextChanged email validation is not working as expected

我正在使用下面的代碼來驗證電子郵件輸入

  private boolean validateEmail(String email) {
        String emailPattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[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 下面的代碼(我正在使用ButterKnife

@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;
        }
    }

問題在於它不夠智能。 例如,如果我鍵入myemail@gmail.com它仍然顯示錯誤消息。 但是,如果我鍵入myemail@gmail.com然后輸入一個space ,然后單擊刪除該space那么一切都很好,錯誤消失了。

以前,此驗證是在按鈕的onClick進行的。 我在這里做錯了什么?

    @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%工作

嘗試這個 :

@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;
    }
}

清除錯誤的正確輸入

使用內置的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM