带验证的Android编辑文字不起作用?

时间:2014-07-10 13:08:08

标签: android validation android-edittext

我是Android和制作和应用的新手,需要编辑文本及其验证。我尝试了不同的方法来验证编辑文本,但是没有用。请帮帮我一下,谢谢。 我想设置要输入的值的范围,例如:如果超过13到80之间然后给出错误,我的代码仅在编辑文本为空时才会出错,但是当值小于13或大于80。

那些因为质量低或其他原因投票我的问题的人请我投票给我,因为我是这个网站的新手,我现在不想问问质量问题。因此,我的帐户被禁止,我无法提出新问题。请为初学者开发一些帮忙。感谢

以下是我使用的代码:

EditText age = (EditText)findViewById(R.id.age);
EditText weight= (EditText)findViewById(R.id.weight);
EditText height= (EditText)findViewById(R.id.height);

Button calculate = (Button) findViewById(R.id.btn_cal);

calculate.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View view) {

             final String a=age.getText().toString();
             final String w=weight.getText().toString();
             final String h=height.getText().toString();

             if(a.length()==0 || (a.length()<12 && a.length()>81)){
                 age.requestFocus();
                 age.setError("Between 13 ans 80");
             }

             else if(w.length()==0 || (w.length()<40 && w.length()>301)){
                 weight.requestFocus();
                 weight.setError("Weight required!");
             }
             else if(h.length()==0 || (h.length()<49 && h.length()>251)){
                 height.requestFocus();
                 height.setError("Height required!");
             }

         else{

             aN=Integer.parseInt(a);

             wN=Integer.parseInt(w);

             hN=Integer.parseInt(h);

             }
         } 
         });

5 个答案:

答案 0 :(得分:2)

a.length()<12 && a.length()>81)

此行表示“长度小于12且同时大于81”。它总是错误的。

应该是

int ageValue = Integer.valueOf(a);
if (ageValue < 12 || ageValue > 80) {

并且无需检查length() == 0,因为它属于length() < 12条件。

答案 1 :(得分:1)

您可以使用Integer.parse(),例如:

int a = Integer.parse(edittext1.getText().toString().trim());

if(a >= 13 && a <= 80)
{
    //do something
}

答案 2 :(得分:0)

这里有一个年龄,它是一个字符串,你怎么比较a.length()??

实际可能

int intAge = 0; 
 try{
 intAge = Integer.parseInt(a);
 }catch(Exception e){
 }
  if (a.length()==0 || (intAge < 12 || intAge > 80)) {
// your code  
}

然后比较其他情况

答案 3 :(得分:0)

     if(age.getText().toString().length()==0 || 
                              !(a>12 && a<=80))
                 {
                     age.requestFocus();
                     age.setError("Between 13 ans 80");
                 }

                 else if(weight.getText().toString().length()==0 || 
                                                 !(w>40 && w<=300))
                 {
                     weight.requestFocus();
                     weight.setError("Weight required!");
                 }
                 else if(height.getText().toString().length()==0 || 
                                                 !(h>50 && h<=250))
                 {
                     height.requestFocus();
                     height.setError("Height required!");
                 }

答案 4 :(得分:0)

我正在为您提供基本代码,以便您可以根据自己的需要进行扩展。使用以下代码

MainActivity.java

    editText = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            int age = Integer.parseInt(editText.getText().toString().trim());
            if (age > 13 && age <= 80) {
                Toast.makeText(MainActivity.this, "Valid age", Toast.LENGTH_LONG).show();
            }
        }
    });

main.xml中

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="45dp"
    android:text="Button" />

此代码将覆盖“有效年龄”的消息。如果您输入的年龄介于13岁和13岁之间80。