2

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

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

4 回答 4

1

您正在尝试将 String 解析为 Double。字符串来自:

text_cost_code.getText()

因此,如果 text_cost_code 不是数字,则会出现此异常。确保 textView 包含正确格式的数字。

于 2013-04-30T09:26:27.760 回答
1

Double.parseDouble(text_cost_code.getText().toString());抛出一个NumberFormatException因为Double.parseDouble()无法处理不符合其预期格式的字符串。检查是否text_cost_code.getText()包含数字。

于 2013-04-30T09:27:14.857 回答
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"因此用户不允许添加数字以外的内容... :)

于 2013-04-30T09:42:29.327 回答
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为空,没有检查是否包含数字

于 2013-04-30T09:28:56.280 回答