2013-04-30 72 views
2

我写一个应用车中,我需要一个活动,已经通过点击列表视图中,用户打开特定项目。列表视图项排点击产生的原因:java.lang.NumberFormatException

我使用列表视图两种不同的活动,一个显示所选项目(S)即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

什么是你的行数77'04-30 14:37:10.073:E/AndroidRuntime(273):at com.era.restaurant.versionoct.menu.ProductInformationActivity.onCreate(ProductInformationActivity.java:77)' – SilentKiller 2013-04-30 09:26:03

+0

首先查看ProductInformationActivity.java行77 – 2013-04-30 09:26:05

+0

可能是由于文本应该为null或txt_total.setText(String.valueOf(itemamount)); – 2013-04-30 09:30:03

回答

1

你试图解析字符串转化成一个Double。字符串来自:

text_cost_code.getText() 

因此,如果text_cost_code不是一个数字,你会得到这个异常。确保textView保存正确的格式化数字。

+0

我发布了更多的ProductInformationActivity.java代码,现在检查 – 2013-04-30 09:33:16

+0

您需要围绕try/catch中的语句。查看ling的答案。 – edoardotognoni 2013-04-30 09:40:27

1

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

+0

我张贴ProductInformationActivity.java的更多的代码,检查现在 – 2013-04-30 09:34:38

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你只检查是否为空或没有,你没有检查它是否包含数字

+0

我张贴ProductInformationActivity.java的更多的代码,现在 – 2013-04-30 09:32:32

+0

查见我的编辑答案,查看代码仔细txt_total.setText(将String.valueOf(itemamount)); – 2013-04-30 09:37:13

0

使用验证之前TypeCasting直接从TextView或EditText得到的值

if (text_cost_code.getText().toString().length() > 0) { 
     itemamount = Double.parseDouble(text_cost_code.getText().toString()); 
    } else { 
     itemamount = 0; 
    } 

在此之前,你必须保持android:inputtype="number"验证的XML代码本的EditText所以用户不会允许除numericals加... :)

+0

如果text_cost_code包含“hai”,则会发生什么 – 2013-04-30 09:44:51

+0

@ling。如果EditText被命名为成本代码,所以成本必须有'inputType作为数字',所以它不会允许字母.. – SilentKiller 2013-04-30 09:49:28

+0

告诉Chulbul Pandey – 2013-04-30 09:50:49

相关问题