我有一個註冊活動並試圖驗證上的字段註冊按鈕單擊。我正在使用setError()
方法顯示錯誤消息它的工作但是有一個問題它在當時專注於特定領域的工作。我想是應該由1檢查所有的字段和驗證消息應該出現在所有領域的一次OR從頂到底的,如果超過1個字段是無效在EditText上驗證無法正常工作
我至今是 註冊按鈕的代碼
if (mSignUpBtn != null) {
mSignUpBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
assert unameEditText != null;
final String uName = unameEditText.getText().toString();
if (!isValidName(uName)) {
unameEditText.setVisibility(View.VISIBLE);
unameEditText.setError("Invalid Username, Username must be A-Z,a-z,_,0-9 Can't contain Space");
}
assert emailEditText != null;
final String email = emailEditText.getText().toString();
if (!isValidEmail(email)) {
unameEditText.setVisibility(View.VISIBLE);
emailEditText.setError("Invalid Email");
}
assert passEditText != null;
final String pass = passEditText.getText().toString();
if (!isValidPassword(pass)) {
unameEditText.setVisibility(View.VISIBLE);
passEditText.setError("Invalid Password");
}
}
});
}
代碼的驗證方法
private boolean isValidName(String uName) {
String NAME_PATTERN = "[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789_]*";
Pattern pattern = Pattern.compile(NAME_PATTERN);
Matcher matcher = pattern.matcher(uName);
return matcher.matches();
}
// validating email id
private boolean isValidEmail(String email) {
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(email);
return matcher.matches();
}
// validating password with retype password
private boolean isValidPassword(String pass) {
return (pass.length() > 6);
}
一切都很好,除了它應該在驗證通過才能或所有領域的所有一次,而不是僅僅關注一個
這裏是圖像顯示,如果USERNAME
場是有空格的顯示錯誤消息,但不顯示任何電子郵件和密碼字段,因爲這些都不是焦點處
我應該怎麼做來解決它?由於
使用此圖案 '字符串至REGx = 「^ [\\ p {L} .'-] + $」;' – sushildlh
圖案我認爲正確的,因爲當電子郵件字段是焦點它顯示在錯誤該字段,如果它具有反模式字符 –