Android: Как я могу проверить ввод EditText? - PullRequest
162 голосов
/ 04 мая 2010

Мне нужно сделать проверку ввода формы для серии EditTexts. Я использую OnFocusChangeListeners для запуска проверки после ввода пользователем каждого из них, но это не ведет себя так, как требуется для последнего EditText.

Если я нажимаю кнопку «Готово» во время ввода окончательного EditText, тогда InputMethod отключается, но технически фокус никогда не теряется на EditText (и поэтому проверка никогда не происходит).

Какое лучшее решение?

Должен ли я отслеживать, когда InputMethod отсоединяется от каждого EditText, а не когда фокус меняется? Если да, то как?

Ответы [ 14 ]

3 голосов
/ 07 апреля 2014

В файле main.xml

Вы можете поставить следующий атрибут для проверки только буквенного алфавита, который может принимать текст редактирования.

Сделайте это:

  android:entries="abcdefghijklmnopqrstuvwxyz"
2 голосов
/ 05 августа 2013

Вы можете получить желаемое поведение, слушая, когда пользователь нажимает кнопку «Готово» на клавиатуре, а также ознакомьтесь с другими советами по работе с EditText в моем сообщении «Проверка формы Android - правильный путь»

Пример кода:

mTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {                    
            validateAndSubmit();
            return true;
        }
        return false;
    }});  
0 голосов
/ 10 мая 2018

для проверки адреса электронной почты и пароля попробуйте

  if (isValidEmail(et_regemail.getText().toString())&&etpass1.getText().toString().length()>7){
      if (validatePassword(etpass1.getText().toString())) {
      Toast.makeText(getApplicationContext(),"Go Ahead".....
      }
      else{

       Toast.makeText(getApplicationContext(),"InvalidPassword".....
       }

}else{

 Toast.makeText(getApplicationContext(),"Invalid Email".....
}


public boolean validatePassword(final String password){
    Pattern pattern;
    Matcher matcher;
    final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.* 
    [@#$%^&+=!])(?=\\S+$).{4,}$";
    pattern = Pattern.compile(PASSWORD_PATTERN);
    matcher = pattern.matcher(password);

    return matcher.matches();
}

public final static boolean isValidEmail(CharSequence target) {
    if (target == null)
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
0 голосов
/ 22 декабря 2017

Я создал эту библиотеку для Android, где вы можете проверить дизайн материала EditText внутри и EditTextLayout легко, как это:

    compile 'com.github.TeleClinic:SmartEditText:0.1.0'

тогда вы можете использовать его так:

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/passwordSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Password"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setPasswordField="true"
    app:setRegexErrorMsg="Weak password"
    app:setRegexType="MEDIUM_PASSWORD_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    android:id="@+id/ageSmartEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setLabel="Age"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setRegexErrorMsg="Is that really your age :D?"
    app:setRegexString=".*\\d.*" />

Затем вы можете проверить, действительно ли это так:

    ageSmartEditText.check()

Дополнительные примеры и настройки можно проверить в хранилище. https://github.com/TeleClinic/SmartEditText

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...