【问题标题】:TextInput Layout not clearing the error messageTextInput 布局未清除错误消息
【发布时间】:2017-08-18 13:45:39
【问题描述】:

在某些用户输入后无法清除文本字段错误。

如果我添加一条错误消息,它位于编辑文本下方,一切看起来都很好。

这里我输入了第一个用户名,但在 textinput 布局下方仍然显示错误。

代码:

if(!TextUtils.isEmpty(display_name) && !TextUtils.isEmpty(email) && !TextUtils.isEmpty(password)){

    mRegProgress.setTitle("Registering User");
    mRegProgress.setMessage("Please wait....");
    mRegProgress.setCanceledOnTouchOutside(false);
    mRegProgress.show();

    register_user(display_name, email, password);

}else{

    if (mDisplayName.getEditText().getText().toString().length() == 0)
    {
        mDisplayName.setErrorEnabled(true);
        mDisplayName.setError("Please Provide Your Name!");
    }
    else if ((!android.util.Patterns.EMAIL_ADDRESS.matcher(mEmail.getEditText().getText().toString()).matches()) && mEmail.getEditText().getText().toString().length() == 0)
    {
        mEmail.setErrorEnabled(true);
        mEmail.setError("Please Provide Valid Email Address!");
    }
    else if (mPassword.getEditText().getText().toString().length() == 0)
    {
        mPassword.setErrorEnabled(true);
        mPassword.setError("Please Provide Password!");
    }

    else{
        if (mDisplayName.getEditText().getText().toString().length() > 0){
            mDisplayName.setError(null);
            mDisplayName.setErrorEnabled(false);
        }

        else if(mEmail.getEditText().getText().toString().length() > 0){
            mEmail.setError(null);
            mEmail.setErrorEnabled(false);
        }
        else if(mPassword.getEditText().getText().toString().length() == 0){
            mPassword.setError(null);
            mPassword.setErrorEnabled(false);
        }
    }
}

【问题讨论】:

    标签: android


    【解决方案1】:

    您需要在获得它们的值后清除您的文本输入 - 当您确认它们具有值时。如果在执行第一个 else 之后它们没有任何值。

    if(!TextUtils.isEmpty(display_name) && !TextUtils.isEmpty(email) && 
    !TextUtils.isEmpty(password)){
    
        mRegProgress.setTitle("Registering User");
        mRegProgress.setMessage("Please wait....");
        mRegProgress.setCanceledOnTouchOutside(false);
        mRegProgress.show();
    
        register_user(display_name, email, password);
        // This is where you reset your text inputs and other bits and pieces.
        // If this is true nothing beyond here is executed!!
    
    }else{
    

    所以将你的逻辑移到 else 之上:

    if(!TextUtils.isEmpty(display_name) && !TextUtils.isEmpty(email) && 
    !TextUtils.isEmpty(password)){
    
        mRegProgress.setTitle("Registering User");
        mRegProgress.setMessage("Please wait....");
        mRegProgress.setCanceledOnTouchOutside(false);
        mRegProgress.show();
    
        register_user(display_name, email, password);
        // This is where you reset your text inputs and other bits and pieces.
        // Start your logic to validate the input here
        if (mDisplayName.getEditText().getText().toString().length() == 0){
            .../...
    
    }else{
        // Put your logic here if there is no input. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      相关资源
      最近更新 更多