Android Email Validation on EditText

前端 未结 13 1048
陌清茗
陌清茗 2020-12-29 04:38

I have one edittext and I would to to write email validation in my Editttext this is a xml code



        
相关标签:
13条回答
  • 2020-12-29 05:22

    here is a whole code for login validations......

    public class LoginActivity extends AppCompatActivity {
    private static final String TAG = "LoginActivity";
    private static final int REQUEST_SIGNUP = 0;
    
    @Bind(R.id.input_email) EditText _emailText;
    @Bind(R.id.input_password) EditText _passwordText;
    @Bind(R.id.btn_login) Button _loginButton;
    @Bind(R.id.link_signup) TextView _signupLink;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
    
        _loginButton.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                login();
            }
        });
    
        _signupLink.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // Start the Signup activity
                Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
                startActivityForResult(intent, REQUEST_SIGNUP);
                finish();
                overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
            }
        });
    }
    
    public void login() {
        Log.d(TAG, "Login");
    
        if (!validate()) {
            onLoginFailed();
            return;
        }
    
        _loginButton.setEnabled(false);
    
        final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this,
                R.style.AppTheme_Dark_Dialog);
        progressDialog.setIndeterminate(true);
        progressDialog.setMessage("Authenticating...");
        progressDialog.show();
    
        String email = _emailText.getText().toString();
        String password = _passwordText.getText().toString();
    
        // TODO: Implement your own authentication logic here.
    
        new android.os.Handler().postDelayed(
                new Runnable() {
                    public void run() {
                        // On complete call either onLoginSuccess or onLoginFailed
                        onLoginSuccess();
                        // onLoginFailed();
                        progressDialog.dismiss();
                    }
                }, 3000);
    }
    
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_SIGNUP) {
            if (resultCode == RESULT_OK) {
    
                // TODO: Implement successful signup logic here
                // By default we just finish the Activity and log them in automatically
                this.finish();
            }
        }
    }
    
    @Override
    public void onBackPressed() {
        // Disable going back to the MainActivity
        moveTaskToBack(true);
    }
    
    public void onLoginSuccess() {
        _loginButton.setEnabled(true);
        finish();
    }
    
    public void onLoginFailed() {
        Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
    
        _loginButton.setEnabled(true);
    }
    
    public boolean validate() {
        boolean valid = true;
    
        String email = _emailText.getText().toString();
        String password = _passwordText.getText().toString();
    
        if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            _emailText.setError("enter a valid email address");
            valid = false;
        } else {
            _emailText.setError(null);
        }
    
        if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
            _passwordText.setError("between 4 and 10 alphanumeric characters");
            valid = false;
        } else {
            _passwordText.setError(null);
        }
    
        return valid;
    }
    

    }

    0 讨论(0)
  • 2020-12-29 05:22

    Assign a String variable to store the value of this EditText:

    emailInput = mail.getText().toString().trim();
    

    Use setError in your EditText:

    if(!isValidEmail(emailInput)){
       mail.setError("Invalid"); /*"Invalid Text" or something like getString(R.string.Invalid)*/
       mail.requestFocus();
    }
    

    Create a method to check the email:

    private boolean isValidEmail(String emailInput) {
        String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
                + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    
        Pattern pattern = Pattern.compile(EMAIL_PATTERN);
        Matcher matcher = pattern.matcher(emailInput);
        return matcher.matches();
    }
    
    0 讨论(0)
  • 2020-12-29 05:29
    private void isValidEmail(String email_id) {
    
            if (email_id == null){
                checkTextView.setVisibility(View.VISIBLE);
                checkTextView.setText(LocaleController.getString("EnterValidEmail", R.string.EnterValidEmail));
                return;
            }
            if (android.util.Patterns.EMAIL_ADDRESS.matcher(email_id).matches()) {
                checkTextView.setVisibility(View.GONE);
            } else {
                checkTextView.setVisibility(View.VISIBLE);
                checkTextView.setText(LocaleController.getString("EnterValidEmail", R.string.EnterValidEmail));
            }
    

    Take a textView ex.checkTextView and validate when the email is valid then the textview is gone otherwise it show the message

    0 讨论(0)
  • 2020-12-29 05:31

    Why not use:

    public final static boolean isValidEmail(CharSequence target) {
      return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }
    

    As suggested here.

    0 讨论(0)
  • 2020-12-29 05:32

    Try following code:

    public final static boolean isValidEmail(CharSequence target) {
        return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }
    

    This works fine.

    0 讨论(0)
  • 2020-12-29 05:32

    I had a query in email pattern for more than one Email ID validation and for only one Email ID.I solved it by using :

    public static final String patter_emails="^(\\s*,?\\s*[0-9a-za-z]([-.\\w]*[0-9a-za-z])*@([0-9a-za-z][-\\w]*[0-9a-za-z]\\.)+[a-za-z]{2,9})+\\s*$";
    public static final String patter_email="^(\\s*[0-9a-za-z]([-.\\w]*[0-9a-za-z])*@([0-9a-za-z][-\\w]*[0-9a-za-z]\\.)+[a-za-z]{2,9})+\\s*$";
    

    These above is used for pattern in Java and Android both.

    check this by using:

    pattern test: rubular.com

    0 讨论(0)
提交回复
热议问题