Android 如何将设置错误隐藏到编辑文本中
我有两个Android 如何将设置错误隐藏到编辑文本中,android,android-edittext,Android,Android Edittext,我有两个EditText,当编辑文本为空时我设置了错误,但问题是当EditText取值时,错误仍然显示,如下所示: String username= edit_text_username.getText().toString(); String password = edit_text_password.getText().toString(); loginButton.setOnClickListener(new View.OnClickListener() { @O
EditText
,当编辑文本为空时我设置了错误,但问题是当EditText
取值时,错误仍然显示,如下所示:
String username= edit_text_username.getText().toString();
String password = edit_text_password.getText().toString();
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (username.equals("")) {
progressDialogLogin.dismiss();
layoutUsername.setError(" required!");
Layoutpassword.requestFocus();
} else {
layoutUsername.setError("");
}
if (password.equals("")) {
progressDialogLogin.dismiss();
Layoutpassword.setError(" required!");
} else {
Layoutpassword.setError("");
}
}
});
这是我的代码:
String username= edit_text_username.getText().toString();
String password = edit_text_password.getText().toString();
if (username.equals("")) {
progressDialogLogin.dismiss();
layoutUsername.setError(" required!");
Layoutpassword.requestFocus();
}
else if (password.equals("")) {
progressDialogLogin.dismiss();
Layoutpassword.setError(" required!");
}
else {
有什么想法吗?您可以添加TextChangedListener来检查是否为空。例如:
edit_text_username.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length() > 0){
layoutUsername.setError("");
} else {
layoutUsername.setError("user name required");
}
}
});
如果要在单击“登录”按钮时进行验证,可以使用以下命令:
String username= edit_text_username.getText().toString();
String password = edit_text_password.getText().toString();
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (username.equals("")) {
progressDialogLogin.dismiss();
layoutUsername.setError(" required!");
Layoutpassword.requestFocus();
} else {
layoutUsername.setError("");
}
if (password.equals("")) {
progressDialogLogin.dismiss();
Layoutpassword.setError(" required!");
} else {
Layoutpassword.setError("");
}
}
});
您可以添加TextChangedListener以检查是否为空。例如:
edit_text_username.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length() > 0){
layoutUsername.setError("");
} else {
layoutUsername.setError("user name required");
}
}
});
如果要在单击“登录”按钮时进行验证,可以使用以下命令:
String username= edit_text_username.getText().toString();
String password = edit_text_password.getText().toString();
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (username.equals("")) {
progressDialogLogin.dismiss();
layoutUsername.setError(" required!");
Layoutpassword.requestFocus();
} else {
layoutUsername.setError("");
}
if (password.equals("")) {
progressDialogLogin.dismiss();
Layoutpassword.setError(" required!");
} else {
Layoutpassword.setError("");
}
}
});
使用android.support.design.widget.TextInputLayout在Edittext中显示错误: .xml代码:
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint" />
使用android.support.design.widget.TextInputLayout在Edittext中显示错误: .xml代码:
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint" />
试试这个
edtUserName.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) {
}
@Override
public void afterTextChanged(Editable s) {
if (edtUserName.getText().toString().trim().length() > 0) {
usernameLayout.setError(null);
}
}
});
希望这对你有所帮助试试这个
edtUserName.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) {
}
@Override
public void afterTextChanged(Editable s) {
if (edtUserName.getText().toString().trim().length() > 0) {
usernameLayout.setError(null);
}
}
});
希望这能帮助您更有效的方法是:
private boolean validatePassword() {
if (pass.getText().toString().trim().isEmpty()) {
pass.setError(getString(R.string.err_msg_pass));
requestFocus(text_pass);
return false;
}else if(pass.getText().toString().length()<8) {
pass.setError(getString(R.string.err_msg_pass_length));
requestFocus(text_pass);
return false;
}else {
text_pass.setErrorEnabled(false);
}
return true;
}
private boolean validatePassword(){
if(pass.getText().toString().trim().isEmpty()){
setError(getString(R.string.err_msg_pass));
请求焦点(文本传递);
返回false;
}否则,如果(pass.getText().toString().length()更有效的方法是:
private boolean validatePassword() {
if (pass.getText().toString().trim().isEmpty()) {
pass.setError(getString(R.string.err_msg_pass));
requestFocus(text_pass);
return false;
}else if(pass.getText().toString().length()<8) {
pass.setError(getString(R.string.err_msg_pass_length));
requestFocus(text_pass);
return false;
}else {
text_pass.setErrorEnabled(false);
}
return true;
}
private boolean validatePassword(){
if(pass.getText().toString().trim().isEmpty()){
setError(getString(R.string.err_msg_pass));
请求焦点(文本传递);
返回false;
}else if(pass.getText().toString().length()在else部分中的可能重复添加layoutUsername.setErrorEnabled(false);Layoutpassword.setErrorEnabled(false);并重试?在else部分中的可能重复添加layoutUsername.setErrorEnabled(false);Layoutpassword.setErrorEnabled(false);然后重试?@MoayedI.Alayseh您需要检查这两个条件,当输入无效(显示错误)和输入有效(隐藏错误)时,请检查我的更新答案。@MoayedI.Alayseh您需要检查这两个条件,当输入无效(显示错误)和输入有效(隐藏错误)时,请检查我的更新答案。