有人能告诉我为什么下面的代码不能在真实设备上运行,而是在模拟器上运行吗?当我说它不起作用时,这意味着当我进入这个活动时它会抛出:“应用程序停止工作”。
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 上逐步进行了调试,删除了所有代码行并逐行进行..直到我发现错误在那里。
在模拟器中,一切正常运行,没有错误或警报。我还放了 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(",", "."));