验证多个edittext并显示edittext.setError(" String");

时间:2016-09-07 09:51:16

标签: java android validation android-edittext

我正在尝试验证一些edittext。我做了7个edittexts。电话号码,名字,姓氏,取件地址,邮政编码,取件时间,产品数量。你可以看到我做了7个edittexts,我想验证它们,这样当我按下按钮进入下一页时,它会完成所有数据库发布并获得该按钮。我已经创建了一个方法(public void addInfo),现在我在View.OnClick实现的方法上添加了验证。这是我为验证编写的代码。

public void onClick(View v) {

        if (v == nextbuttonjava) {


            if(phnumberjava.getText().toString().length() < 10)
            {

                phnumberjava.setError("Invalid Phone Number");
            }
            if(firstnamejava.getText().toString().length() == 0)
            {
                firstnamejava.setError("Whats your first name?");
            }
            if(lastnamejava.getText().toString().length() == 0)
            {
                lastnamejava.setError("Whats your last name?");
            }
            if(pickupaddressjava.getText().toString().length() == 0)
            {
                pickupaddressjava.setError("Enter your address");
            }
            if(postalcodejava.getText().toString().length() < 6)
            {
                postalcodejava.setError("Invalid postal code");
            }
            if(pickuptimejava.getText().toString().length() == 0)
            {
                pickuptimejava.setError("Enter pickuptime");
            }
            if(numberstuffjava.getText().toString().length() == 0) {


                numberstuffjava.setError("Enter number of clothes");
            }
            else
            {
                addInfo();
                Intent nextpageintent = new Intent(Afterfullscreen.this, Extrainformation.class);
                startActivity(nextpageintent);
            }



        }
    }

我希望每个If语句都应该为true,以使其他工作,以便意图起作用,然后我转到其他活动。但它不是这里的场景。只有电话号码才能正常工作(如果我输入的电话号码低于10位数,则会显示错误,并且它不会运行其他部分)。我主要担心的是我有7个edittexts,即使一个If语句成立,那么其他的不应该运行,我也不应该在我的数据库上发布不完整的数据而转向下一个意图。我想要这样做如果任何edittexts if语句出错我应该得到一个错误(例如,numberstuffjava.setError(&#34;输入东西&#34;);。

如何解决问题?

7 个答案:

答案 0 :(得分:1)

尝试这样的事情:

public void onClick(View v) {

    if (v == nextbuttonjava) {
        boolean error = false;

        if(phnumberjava.getText().toString().length() < 10)
        {
            error = true;
            phnumberjava.setError("Invalid Phone Number");
        }
        if(firstnamejava.getText().toString().isEmpty())
        {
            error = true;
            firstnamejava.setError("Whats your first name?");
        }
        if(lastnamejava.getText().toString().isEmpty())
        {
            error = true;
            lastnamejava.setError("Whats your last name?");
        }
        if(pickupaddressjava.getText().toString().isEmpty())
        {
            error = true;
            pickupaddressjava.setError("Enter your address");
        }
        if(postalcodejava.getText().toString().length() < 6)
        {
            error = true;
            postalcodejava.setError("Invalid postal code");
        }
        if(pickuptimejava.getText().toString().isEmpty())
        {
            error = true;
            pickuptimejava.setError("Enter pickuptime");
        }
        if(numberstuffjava.getText().toString().isEmpty()) 
        {
            error = true;
            numberstuffjava.setError("Enter number of clothes");
        }
        if(!error)
        {
            addInfo();
            Intent nextpageintent = new Intent(Afterfullscreen.this, Extrainformation.class);
            startActivity(nextpageintent);
        } else {
             //manage error case here
        }
    }
}

另一种选择可能是:

if (v == nextbuttonjava) {

    if(phnumberjava.getText().toString().length() < 10)
    {
        phnumberjava.setError("Invalid Phone Number");
    }
    else if(firstnamejava.getText().toString().isEmpty())
    {
        firstnamejava.setError("Whats your first name?");
    }
    else if(lastnamejava.getText().toString().isEmpty())
    {
        lastnamejava.setError("Whats your last name?");
    }
    else if(pickupaddressjava.getText().toString().isEmpty())
    {
        pickupaddressjava.setError("Enter your address");
    }
    else if(postalcodejava.getText().toString().length() < 6)
    {
        postalcodejava.setError("Invalid postal code");
    }
    else if(pickuptimejava.getText().toString().isEmpty())
    {
        pickuptimejava.setError("Enter pickuptime");
    }
    else if(numberstuffjava.getText().toString().isEmpty()) 
    {
        numberstuffjava.setError("Enter number of clothes");
    }
    else 
    {
        addInfo();
        Intent nextpageintent = new Intent(Afterfullscreen.this, Extrainformation.class);
        startActivity(nextpageintent);
    }
    else
    {
         //manage error case here
    }
}

通过这种方式,您可以使用else if检查任何案例。我更喜欢第一种解决方案,因为它更具有灵活性和#34;。

希望这有帮助!

答案 1 :(得分:0)

if(phnumberjava.getText().toString().length() < 10)
        {

            phnumberjava.setError("Invalid Phone Number");
return "Error message";
        }

else {
    return null;
}

在每个if条件下都这样返回。如果return语句为null,则所有if条件为true。否则显示返回的错误消息

答案 2 :(得分:0)

除此之外,您还可以尝试以下逻辑。在这里,您可以放心,将显示所有错误消息:

if (v == nextbuttonjava) {
            boolean validated = true;

            if(phnumberjava.getText().toString().length() < 10) 
            { 
                phnumberjava.setError("Invalid Phone Number"); 
                validated = false;
            } 
            if(firstnamejava.getText().toString().length() == 0) 
            { 
                firstnamejava.setError("Whats your first name?");
                validated = false;
            } 
            if(lastnamejava.getText().toString().length() == 0) 
            { 
                lastnamejava.setError("Whats your last name?"); 
                validated = false;
            } 
            if(pickupaddressjava.getText().toString().length() == 0) 
            { 
                pickupaddressjava.setError("Enter your address"); 
                validated = false;
            } 
            if(postalcodejava.getText().toString().length() < 6) 
            { 
                postalcodejava.setError("Invalid postal code"); 
                validated = false;
            } 
            if(pickuptimejava.getText().toString().length() == 0) 
            { 
                pickuptimejava.setError("Enter pickuptime"); 
                validated = false;
            } 
            if(numberstuffjava.getText().toString().length() == 0) { 
                numberstuffjava.setError("Enter number of clothes"); 
                validated = false;
            } 

            // fire in the hole !
            if (validated) 
            { 
                addInfo(); 
                Intent nextpageintent = new Intent(Afterfullscreen.this, Extrainformation.class);
                startActivity(nextpageintent);
            } 



        }

答案 3 :(得分:0)

else条件它只附加到numberstuffjava条件,在这种情况下,当if条件为false时,将始终调用else条件。 尝试使用else更改先前的if条件。

答案 4 :(得分:0)

您只需创建一个仅在满足所有需求时才返回children().off('mousewheel DOMMouseScroll')的方法。如果方法返回true,则只进入下一个活动。我在这里举一个例子。

true

然后做下面的事情。

public boolean isValid(){
    if(phnumberjava.getText().toString().length() < 10)
            {
                phnumberjava.setError("Invalid Phone Number");
                return false;
            }
            if(firstnamejava.getText().toString().length() == 0)
            {
                firstnamejava.setError("Whats your first name?");
                return false;
            }
    return true;
}

答案 5 :(得分:0)

如果要检查所有验证,只需添加其他

   if (v == nextbuttonjava) {
                if (edittext1.getText().toString().length() < 5) {
                    edittext1.setError("error");
                } else if (edittext2.getText().toString().length() == 0) {
                    edittext2.setError("error");
                } else {
     //                       your intent here
                }

            }

为每个edittext添加else。

答案 6 :(得分:0)

尝试以下方法检查edittext的空值。

public static boolean m_isError = false;

    /**
     * This is method to check edit text empty or not.
     * 
     * @param p_editText
     *            - edittext
     * @param p_nullMsg
     *            -display message if edittext null
     */
    public static void validateForEmptyValue(EditText p_editText,
            String p_nullMsg) {
        if (p_editText != null && p_nullMsg != null) {
            // use trim() while checking for blank values
            if (TextUtils.isEmpty(p_editText.getText().toString().trim())) {
                m_isError = true;
                p_editText.setError(p_nullMsg);
            }
        }
    }

对每个edittext使用以下方法:

 CustomValidator.m_isError = false;

                CustomValidator.validateForEmptyValue(metfirstname, "enter firstname", metfirstname);
CustomValidator.validateForEmptyValue(metlastname, "enter lastname", metlastname);

           if (!CustomValidator.m_isError) {
          //Define your logic once all the validations are done.

             addInfo();
            Intent nextpageintent = new Intent(Afterfullscreen.this, Extrainformation.class);
            startActivity(nextpageintent);
}