列表视图项目行单击引发者:java.lang.NumberFormatException

时间:2013-04-30 09:23:07

标签: android android-listview

我正在编写一个购物车应用程序,我需要在活动中打开该特定项目,该活动已被列表视图中的用户点击。

我正在使用两个不同的活动,一个用于在列表视图中显示所选项目,即 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

4 个答案:

答案 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"进行验证,以便用户不允许添加除数字之外的其他内容...:)