2012-01-06 73 views
0

我做两个EditText字段的值一些数学,我想对他们有以下验证:Android验证EditText小数点“。”

  1. 他们是不是空的。
  2. 它们对彼此有效(如果第一个字段是整数,第二个应该是相同的,如果第一个是十进制,第二个应该是相同的)。

我无法弄清楚如何验证十进制值或特别是小数点。

我试过了,但没有奏效。我的应用程序崩溃。

if (editText1.getText().toString().equals(".") || editText2.getText().toString().equals(".")) 
    return; 

回答

0

对于十进制值,你可以使用这个:

EditText et = (EditText) findViewById(R.id.myTextView) ; 

et.setInputType(0x00002002); 

将只接受十进制值。

Another solution is here

0

首先,您要将输入类型设置为接受小数和/或数字。

您可以在XML布局设置它:

<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal|number"  
/> 

然后你就可以在你的EditText文本只是转换为双:

double result = new Double(editText1.getText().toString()); 

double result = Double.valueOf(editText1.getText().toString()); 

这种火箭科学那之后你再也不需要你了。

+0

我已经将它转换为双精度。当您尝试解析a时,会发生问题。到一倍。 – user1134920 2012-01-06 20:33:18

0

你可以使用contains()方法来检查,如果你的字符串包含你试图用Float.parseFloat解析它,看到提供

if (textView1.getText().toString().contains(".") || textView2.getText().toString().contains(".")) { 
         Toast.makeText(getApplicationContext(), "Wrong Values", Toast.LENGTH_LONG).show(); 
0

您可以测试的东西是否是一个有效的值或没有参数如果它抛出一个NumberFormatException(通过try/catch)。如果是这样,那么你知道输入无效。

顺便说一句,如果你提供一个视觉提示给用户,告诉他们输入无效,这很好。而不是等到用户按下“计算”按钮,然后才告诉他们。

+0

简单的解决方案!我会抓住这个例外。我的印象是Java让你尝试/捕捉任何可能抛出异常的东西。非常感谢你! – user1134920 2012-01-06 20:35:59