Как вызвать ошибку в TextInput

-10

Я просто хочу показать сообщение об ошибке на TextInput во время ввода пользователем. Например, я хочу показать, что Password is too short когда пользователь вводит TextInput если длина ввода меньше 8.

спросил(а) 2017-07-17T21:25:00+03:00 3 года, 2 месяца назад
0
58

Это с макетом ввода текста

Something like this

в XML файле макета

 <android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_password"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/textView_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>

Ваша деятельность должна быть чем-то вроде этого.

passwordTIL = (TextInputLayout) findViewById(R.id.input_layout_password);
passwordET = (EditText) findViewById(R.id.textVIew_password);

passwordET.addTextChangedListener(new SigninTextWatcher(passwordET)

//you can use this for username too or to check if the email format is correct or not.

private class SigninTextWatcher implements TextWatcher {
private View view;

private SigninTextWatcher(View view) {
this.view = view;
}

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

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

public void afterTextChanged(Editable editable) {
switch (view.getId()) {
case R.id.textView_password:
validatePassword();
break;
}
}
}

private boolean validatePassword() {
if (passwordET.getText().toString().trim().isEmpty()) {
passwordTIL.setError("Empty error message");
requestFocus(passwordET);
return false;
} else if(passwordET.getText().toString().length() < 6){
passwordTIL.setError("Short password error message");
requestFocus(passwordET);
return false;
}else {
passwordTIL.setErrorEnabled(false);
}
return true;
}

Вы можете использовать функцию validatePassword() для включения/отключения кнопки входа

ответил(а) 2017-07-18T08:21:00+03:00 3 года, 2 месяца назад
41

Добавьте addTextChangedListener() в ваш editText.


    EditText password = (EditText) findViewById(R.id.password_et);

password.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if((charSequence.toString()).length < 6){
Toast.makeText(this, "Password length less than 6", Toast.LENGTH_SHORT).show();
}
}

@Override
public void afterTextChanged(Editable editable) {

}
});

ответил(а) 2017-07-17T21:41:00+03:00 3 года, 2 месяца назад
41

использование

et_password.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.length()<6){
et_password.setError("The password must contain 6 characters");
}

}

@Override
public void afterTextChanged(Editable editable) {

}
});

ответил(а) 2017-07-17T21:31:00+03:00 3 года, 2 месяца назад
40

Вы можете использовать textChangedListener, прикрепленный к вашему тексту редактирования. См. Простой пример:

Field1.addTextChangedListener(new TextWatcher() {

@Override
public void afterTextChanged(Editable s) {
if(s.length() < 6)
// show message too short
}}

@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {

});

ответил(а) 2017-07-17T21:28:00+03:00 3 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема