Android:数据输入中的逗号
我有欧洲(西班牙/德国)的用户,他们在数据输入中以某种方式得到逗号。拥有超过 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 个测试设备中重现该问题。
有什么想法吗?
I have users in Europe (Spain/Germany) that are somehow getting commas in their data entry. With over 100,000 users, only some in Europe are having issues. None of my American or other European customers are reporting any problems.
One customer that is helping has made sure to enter the number using only a decimal point and I still have the problem.
The field in the Layout is:
<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" />
My class code is as follows:
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 );
When I actually get a copy of their database, sure enough, the data has commas in it. The dbHelper simply inserts the data with no additional checks, as the code upfront should properly verify correct data entry.
I cannot reproduce the problem in either the Emulator or my 2 test devices.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可能与用户的默认区域设置有关。从
Locale
的文档中,有一个小节标记为请注意默认区域设置
,其中一部分内容为:您仅使用一个模式创建
DecimalFormat
对象,该模式由 文档说它使用用户的默认区域设置。您可以使用
NumberFormat.getCurrencyInstance(Locale)
静态方法强制使用区域设置(不推荐),也可以提供对其他区域设置的支持(推荐)。It likely has to do with the users default locale. From the documentation of
Locale
there is a subsection labeledBe wary of the default locale
, with a portion that reads:You create your
DecimalFormat
object using just a pattern, which by the documentation says that it uses the users default locale.You can either force a locale, by using
NumberFormat.getCurrencyInstance(Locale)
static method (not recommended), or you can provide support for other locales (recommended).