Я получаю сообщение об ошибке
У меня есть один текст редактирования для поля пароля
<EditText
android:id="@+id/etNewPassword"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_new_password"
android:inputType="textPassword|textNoSuggestions"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^*"
android:maxLength="16"
android:textSize="14dp" />
Предположим, я хочу ввести Пароль @ 123 в это поле editText.
Не вводить мне значения после @ .it теряет фокус после ввода @
затем снова мне нужно нажать на тот же EditText и ввести значения 123.
но если я наберу @ 123, это работает. Даже если я наберу @Pass, он работает.
Это только не работает, когда я пытаюсь сделать комбинацию букв-специальных символов-цифр.
Это происходит только на некоторых устройствах.
Вот мой код Java.
etPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
String str = "";
@Override
public void afterTextChanged(Editable s) {
String text = s.toString();
str = s.toString();
if (etPassword.getText().toString().length() > 0 && etPassword.getText().toString().equals(" ") && etPassword.getText().toString().equals("^[@.#$%^&*_&\\\\\\\\]+$")) {
etPassword.setText("");
} else {
if (Utils.validateNotBlank(etPassword.getText().toString())) {
Pattern p = Pattern.compile("[A-Za-z0-9]+");
Matcher m = p.matcher(text);
//boolean b = m.matches();
if (some_ID_validation) {
String editTextString = etPassword.getText().toString();
boolean spaceExist = false, specialExist = false;
if (editTextString.contains(" ")) {
text = etPassword.getText().toString().replaceAll(" ", "");
if (!str.equals(text)) {
str = text;
spaceExist = true;
etPassword.setText(text);
etPassword.setSelection(text.length());
}
}
if (!m.matches()) {
text = etPassword.getText().toString().replaceAll("[^a-zA-Z0-9]+", "");
if (!str.equals(text)) {
specialExist = true;
str = text;
etPassword.setText(text);
etPassword.setSelection(text.length());
}
}
Pattern p = Pattern.compile("[^-\\s]");
Matcher m = p.matcher(text);
boolean b = m.matches();
if (etPassword.getText().toString().contains(" ") && !b) {
text = text.replaceAll(" ", "");
Util.showToast("Spaces not allowed in password field", activity);
if (!str.equals(text)) {
str = text;
etPassword.setText(text);
etPassword.setSelection(text.length());
}
}
if (text.length() > 0) {
//setPasswordStrengthMsg(Util.getPasswordStrength(text));
} else {
if (!str.equals(text)) {
str = text;
etPasswordStrength.setText("");
}
}
}
}
});
}
Это не работает только на некоторых телефонах