2016-07-22 2 views
0

For example i want that the email textInputLayout should only show when i am working with email,but here all are showing and conform password error is not showingКак использовать setError() в android TextInputLayout, чтобы отображалась соответствующая ошибка?

Я написал ниже код. Во-первых, я хочу увидеть ошибку только одного TextInputLayout Я работаю с. Во-вторых,, ошибка для соответствующего пароля не отображается, что я могу сделать, чтобы решить эту проблему?

public class DoctorSignUp extends AppCompatActivity implements View.OnClickListener { 

TextView tvSubmit; 
EditText etEmailId, etPassword, etCPassword, etMobile; 
FirebaseAuth firebaseAuth; 
TextInputLayout tilEmailId,tilPassword,tilCPassword,tilMobile; 
ProgressDialog progressDialog; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_doctor_signup); 

    //initialize view controls 

    firebaseAuth = FirebaseAuth.getInstance(); 
    progressDialog = new ProgressDialog(this); 

    etEmailId = (EditText) findViewById(R.id.etEmailId); 
    etPassword = (EditText) findViewById(R.id.etPassword); 
    etCPassword = (EditText) findViewById(R.id.etCPassword); 
    etMobile = (EditText) findViewById(R.id.etMobile); 

    tvSubmit = (TextView) findViewById(R.id.tvSubmit); 

    tilEmailId= (TextInputLayout) findViewById(R.id.tilEmailId); 
    tilPassword= (TextInputLayout) findViewById(R.id.tilPassword); 
    tilCPassword= (TextInputLayout) findViewById(R.id.tilCPassword); 
    tilMobile= (TextInputLayout) findViewById(R.id.tilMobile); 

    //event handling 

    tvSubmit.setOnClickListener(this); 


    etEmailId.addTextChangedListener(new MyTextWatcher(DoctorSignUp.this)); 
    etPassword.addTextChangedListener(new MyTextWatcher(DoctorSignUp.this)); 
    etCPassword.addTextChangedListener(new MyTextWatcher(DoctorSignUp.this)); 
    etMobile.addTextChangedListener(new MyTextWatcher(DoctorSignUp.this)); 
} 

@Override 
public void onClick(View v) { 

    registerUser(); 

} 

private void registerUser() { 

    String email = etEmailId.getText().toString(); 
    String password = etPassword.getText().toString(); 


    if (TextUtils.isEmpty(email)) { 
     Toast.makeText(getApplicationContext(), "Please enter email address", Toast.LENGTH_SHORT).show(); 
     return; 
    } 

    if (TextUtils.isEmpty(password)) { 
     Toast.makeText(getApplicationContext(), "Please enter password", Toast.LENGTH_SHORT).show(); 
     return; 
    } 

    progressDialog.setMessage("Registering User,Please wait.."); 
    progressDialog.show(); 

    firebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       Toast.makeText(getApplicationContext(), "Registration Successful", Toast.LENGTH_SHORT).show(); 
      } else 

      { 
       Toast.makeText(getApplicationContext(), "Failed To Register The User", Toast.LENGTH_SHORT).show(); 
      } 
      progressDialog.dismiss(); 
     } 
    }); 
} 

private class MyTextWatcher implements TextWatcher { 
    public MyTextWatcher(Context context) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 

    @Override 
    public void afterTextChanged(Editable editable) { 

     validateEmail(); 
     validatePasswword(); 
     validateConformPassword(); 
     validateMobile(); 


    } 

    private void validateConformPassword() { 

     String password = etPassword.getText().toString(); 
     String cpassword=etCPassword.getText().toString(); 

     if(!password.equals(cpassword)){ 
      tilCPassword.setError("Please enter the same password again"); 
     } 
     else 
      tilCPassword.setErrorEnabled(false); 


    } 


    private void validateMobile() { 
     String mobile = etMobile.getText().toString(); 

     if(mobile.length()<10) { 
      tilMobile.setError("Enter a valid mobile no."); 
     } 

     else 
      tilMobile.setErrorEnabled(false); 
    } 

    private void validatePasswword() { 

     String password = etPassword.getText().toString(); 

     if (password.length() <6){ 
      tilPassword.setError("Password must be of 6 characters atleast"); 
     } 
     else 
      tilPassword.setErrorEnabled(false); 
    } 

    private void validateEmail() { 

     String email = etEmailId.getText().toString(); 

     if(!email.matches("[a-zA-Z0-9._-][email protected][a-z]+.[a-z]+")){ 
      tilEmailId.setError("Please enter valid email id"); 
     } 
     else 
      tilEmailId.setErrorEnabled(false); 
    } 
} 

}

ответ

1

Попробуйте этот тип метода.

public boolean validate() { 
     boolean valid = true; 
     enteredEmailId = mEmail.getText().toString(); 
     enteredPassword = mPassword.getText().toString(); 
     if (enteredEmailId.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(enteredEmailId).matches()) { 
      mEmail.setError("Please Enter Valid Email Address"); 
      valid = false; 
     } else { 
      mEmail.setError(null); 
     } 
     if (enteredPassword.isEmpty() || enteredPassword.length() < 4 || enteredPassword.length() > 10) { 
      mPassword.setError("Password should be between 4 to 10 alphanumeric characters"); 
      valid = false; 
     } else { 
      mPassword.setError(null); 
     } 
     return valid; 
    } 
} 
+0

Спасибо, что ... ваш ответ тоже работал. –

1

попробовать это

можно проверить весь текст, как вы хотите принять все в один

private class MyTextWatcher implements TextWatcher { 
    public MyTextWatcher(Context context) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 

    @Override 
    public void afterTextChanged(Editable editable) { 



    switch (view.getId()) { 
      case R.id.etEmailId: 


     validateEmail(); 

    break; 

    case R.id.etPassword: 


    validatePasswword(); 

    break; 

    case R.id.etCPassword: 


     validatePasswword(); 
     validateConformPassword(); 

    break; 

    case R.id.etMobile: 


     validateMobile(); 

    break; 






    } 




    } 

Использовал equalsIgnoreCase соответствие строке

private void validateConformPassword() { 

    String password = etPassword.getText().toString(); 
    String cpassword=etCPassword.getText().toString(); 

    if(!password.equalsIgnoreCase(cpassword)){ 
     tilCPassword.setError("Please enter the same password again"); 
    } 
    else 
     tilCPassword.setErrorEnabled(false); 


} 
+0

Thankx много сэр, очень полезно. –

+0

Большинство Добро пожаловать ... nikant ... –

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