我正在编写一个购物车应用程序,我需要在活动中打开该特定项目,该活动已被列表视图中的用户点击。
我正在使用两个不同的活动,一个用于在列表视图中显示所选项目,即 CartActivity.java ,其次用于显示另一个活动中的任何选定项目,即 ProductInformationActivity .java
我已编写代码来调用活动中的特定项目,该活动已由用户在 CartActivity.java 的列表视图中选择
// below is the line number 77
itemamount = Double.parseDouble(text_cost_code.getText().toString());
Logcat说:
04-30 14:37:10.073: E/AndroidRuntime(273): FATAL EXCEPTION: main
04-30 14:37:10.073: E/AndroidRuntime(273): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.era.restaurant.versionoct/com.era.restaurant.versionoct.menu.ProductInformationActivity}: java.lang.NumberFormatException:
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.os.Handler.dispatchMessage(Handler.java:99)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.os.Looper.loop(Looper.java:123)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-30 14:37:10.073: E/AndroidRuntime(273): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 14:37:10.073: E/AndroidRuntime(273): at java.lang.reflect.Method.invoke(Method.java:521)
04-30 14:37:10.073: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-30 14:37:10.073: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-30 14:37:10.073: E/AndroidRuntime(273): at dalvik.system.NativeStart.main(Native Method)
04-30 14:37:10.073: E/AndroidRuntime(273): Caused by: java.lang.NumberFormatException:
04-30 14:37:10.073: E/AndroidRuntime(273): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
04-30 14:37:10.073: E/AndroidRuntime(273): at java.lang.Double.parseDouble(Double.java:287)
04-30 14:37:10.073: E/AndroidRuntime(273): at com.era.restaurant.versionoct.menu.ProductInformationActivity.onCreate(ProductInformationActivity.java:77)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-30 14:37:10.073: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-30 14:37:10.073: E/AndroidRuntime(273): ... 11 more
答案 0 :(得分:1)
您正在尝试将String解析为Double。字符串来自:
text_cost_code.getText()
因此,如果text_cost_code不是数字,则会出现此异常。确保textView包含正确的格式化数字。
答案 1 :(得分:1)
Double.parseDouble(text_cost_code.getText().toString());
会抛出NumberFormatException
因为Double.parseDouble()
无法处理不符合其预期格式的字符串。检查text_cost_code.getText()
是否包含数字。
答案 2 :(得分:0)
使用此:
try {
itemamount = Double.parseDouble(text_cost_code.getText().toString()); // Same
} catch (NumberFormatException e) {
itemamount=0.0;
// Toast.makeText(getBaseContext(), "Error: Edittext must contain numbers " ,Toast.LENGTH_SHORT).show();
}
txt_total.setText(String.valueOf(itemamount));
根据你的编辑
if (!edit_qty_code.getText().toString().equals("")
|| !edit_qty_code.getText().toString().equals(""))
在这里,您只检查dit_qty_code
是否为空,您没有检查它是否包含数字
答案 3 :(得分:0)
在直接从TextView或EditText输入TypeCasting之前使用验证
if (text_cost_code.getText().toString().length() > 0) {
itemamount = Double.parseDouble(text_cost_code.getText().toString());
} else {
itemamount = 0;
}
在执行此操作之前,您必须在此EditText的xml代码中对android:inputtype="number"
进行验证,以便用户不允许添加除数字之外的其他内容...:)