Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将设置错误隐藏到编辑文本中_Android_Android Edittext - Fatal编程技术网

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您需要检查这两个条件,当输入无效(显示错误)和输入有效(隐藏错误)时,请检查我的更新答案。