有人可以告诉我为什么下面的代码在真实设备上不起作用但在模拟器上工作?当我说它不起作用时,这意味着当我进入这个活动时,它会抛出:“应用程序停止工作”。
TextView total_price = (TextView) findViewById(R.id.total_price_products);
Double main_value = 0.00;
for(int i = 0; i <= sP.size() - 1; i++){
String[] values = sP.get(i).toString().split("::");
Double price = Double.parseDouble(value[3].toString());
main_value += price;
}
total_price.setText(String.valueOf(main_value) + "€");
我知道错误来自这里,因为我在Eclipse上逐步调试,删除了所有代码行并逐行执行..直到我发现错误就在那里。
在模拟器中,Everythings正常运行,没有错误或警报。我还把Logs看看发生了什么,这就是日志:
Log.e("SP : ", sP.get(i).toString());
// Returns: 1432::Google Company::ASB32AAF3::14.12::2
// which means:
// id::product:model:price:quantity
Log.e("Price : ", String.valueOf(price));
// Returns: 14.12
Log.e("Main Value : ", String.valueOf(main_value));
// Returns: 14.12
// This last value it's correct, since I already
// put in the price field the sum of the original price plus quantity
任何想法或可能的解决方案?您有什么推荐的吗?感谢。
修改:已解决。
似乎我们的设备将Double字段视为“,”而不是“。”。 也就是说,唯一要改变的是:
Double price = Double.parseDouble(value[3].toString().replace(",", "."));