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

问题描述 投票:-3回答:5

我是Android初学者,其制作人和应用程序都需要Edit Text及其验证。我尝试了多种方法来验证编辑文本,但无法正常工作。

我想设置要输入的值的范围,例如:如果在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);

             }
         } 
         });
android validation android-edittext
5个回答
2
投票
a.length()<12 && a.length()>81)

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

应该是

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

而且由于length() == 0处于length() < 12状态,因此无需检查。


1
投票

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

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

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

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!");
                 }

0
投票

这里是年龄,它是一个字符串,为什么要比较a.length()?

实际应该是

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

然后比较其他情况


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至80岁之间的年龄,此代码将显示“有效年龄”的消息。

© www.soinside.com 2019 - 2024. All rights reserved.