Android:数据输入中的逗号

时间:2011-09-04 17:22:54

标签: android numeric

我在欧洲(西班牙/德国)的用户以某种方式在他们的数据输入中获取逗号。拥有超过100,000名用户,只有欧洲的一些用户遇到问题。我的美国或其他欧洲客户都没有报告任何问题。

一位正在帮助的客户确保只使用小数点输入数字,但我仍然遇到问题。

布局中的字段是:

<EditText
    android:id="@+id/xmlPrice"
    android:textSize="17sp"
    android:layout_height="44dp"
    android:layout_width="105dp"
    android:gravity="right"
    android:numeric="decimal"
    android:maxLength="7"
    android:inputType="phone"
    android:digits="0123456789."
    android:selectAllOnFocus="true"
    android:imeOptions="actionNext"
    android:hint="0.00" />

我的班级代码如下:

 EditText etPrice ;
 etPrice = (EditText) findViewById(R.id.xmlPrice);
 String  v_price = etPrice.getText().toString().trim();

 double d_price ;
 try {
    d_price = Double.parseDouble( v_price );
 } catch(NumberFormatException ex )
 {
    d_price = -1 ;
 }
 DecimalFormat fmtval = new DecimalFormat( "0.00" );

 v_price = fmtval.format( d_price ) ;

 mDbHelper.insertRec( v_id, v_price );

当我真正得到他们数据库的副本时,果然,数据中有逗号。 dbHelper只是插入数据而不需要额外的检查,因为前期代码应正确验证数据的正确输入。

我无法在模拟器或我的2个测试设备中重现该问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

可能与用户默认语言环境有关。在Locale的文档中,有一个标记为Be wary of the default locale的小节,其中一部分内容为:

  

例如,如果您要格式化整数,则会使用某些区域设置   非ASCII十进制数字。另一个例子,如果您正在格式化   浮点数一些语言环境将使用','作为小数点   和'。'用于数字分组。

您只使用一种模式创建DecimalFormat对象,documentation表示它使用用户默认的区域设置。

您可以使用NumberFormat.getCurrencyInstance(Locale)静态方法(不推荐)强制使用区域设置,也可以为其他区域设置提供支持(推荐)。