2

リストビューでユーザーがクリックした特定のアイテムをアクティビティで開く必要があるカートアプリを作成しています。

私は2つの異なるアクティビティを使用しています。1つは選択したアイテムをリストビュー、つまりCartActivity.javaで表示し、もう1つは選択したアイテムを別のアクティビティ、つまりProductInformationActivity.javaで表示します。

CartActivity.javaのリスト ビューで、ユーザーが選択したアクティビティ内の特定のアイテムを呼び出すコードを作成しました。

    // below is the line number 77

    itemamount = Double.parseDouble(text_cost_code.getText().toString());

ログキャットは次のように述べています。

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

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 に答える
0

TextView または EditText から直接値を TypeCast する前に検証を使用する

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

android:inputtype="number"これを行う前に、この EditText の xml コードでの検証を維持する必要があるため、ユーザーは数値以外の追加を許可されません... :)

于 2013-04-30T09:42:29.327 に答える