2013-01-24 36 views
0

我有最奇怪的问题...android EditText值

我想要做的就是从EditText获取值并做一些验证。

在的EditText的值必须是1和10之间。然而,即使我输入1或10之间的任何数,但它仍然验证假。我甚至测试了edittext输入,以确保它是正确的,它是,但如果仍然失败。有任何想法吗 ?

这里是代码:

ed = (EditText) dialog2.findViewById(R.id.ed_quantity);             
Button bq = (Button) dialog2.findViewById(R.id.alert_a); 
dialog2.setCancelable(false); 
dialog2.show(); 
bq.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) 
    { 
     String test = ed.getText().toString(); 
     Toast toast23452234 = Toast.makeText(mContext, "Quantity: "+test, Toast.LENGTH_LONG); 
     toast23452234.show(); 
     if(test=="1"||test=="2"||test=="3"||test=="4"||test=="5"||test=="6"||test=="7"||test=="8"||test=="9"||test=="10") 
     { 
      quantity = Integer.parseInt(ed.getText().toString()); 
      dialog2.dismiss(); 
      ed.setText("1"); 
     } 
     else 
     { 
      Toast toast2345223 = Toast.makeText(mContext, "Quantity must be between 1 and 10" , Toast.LENGTH_LONG); 
      toast2345223.show(); 
     } 
    } 
}); 
+0

看到http://stackoverflow.com/questions/2763022试试这个

test.trim().equalsIgnoreCase("1") 

/android-how-can-i-validate-edittext -input –

+1

试试这个'test.trim()。equalsIgnoreCase(“1”)'在你的if条件中 – techieWings

+0

http://stackoverflow.com/questions/513832/how -do-i-compare-strings-in-java – AndroidGecko

回答

0

使用equals方法比较字符串..

if(test.equals("1")||test.equals("2")||test.equals("3")||test.equals("4")||test.equals("5")||test.equals("6")||test.equals("7")||test.equals("8")||test.equals("9")||test.equals("10")) 

或使用int比较

int test = Integer.valueOf(ed.getText().toString()); 
0

String是不是一个原生类型,以便你不能做test=="1"。这比较了对象引用,显然这两个对象有不同的引用。

呼叫equals(Object object)方法字符串对象。像,

test.isEquals("1") 

更好地剖析输入字符串到整数作为

int testInteger = Integer.parseInt(test); 

和比较的

if(testInteger==1 || testInteger ==2) 

这节省了很多方法调用字符串对象。

0

使用.equals( “”)中的字符串的情况下。

if(test.equals("1")||test.equals("2")||test.equals("3")||test.equals("4")||test.equals("5")||test.equals("6")||test.equals("7")||test.equals("8")||test.equals("9")||test.equals("10")) 
0

的字符串操作,而不是==

if(test.equals("1")||... and so on) 

或者转换成字符串 “INT” 使用.equals。

0

使用test.equals("1") || .....

你也可以做到这一点

int t = Integer.parseInt(test); 
if(t == 1 || t == 2 || ...)