1

Web サービスと対話する Android アプリケーションを作成しました。

次のエラーが表示されます。

01-29 10:50:09.879: E/AndroidRuntime(12860): java.lang.RuntimeException: Unable to start activity ComponentInfo{aid.assistant233/aid.assistant233.AidAssistant233Activity}: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.os.Looper.loop(Looper.java:130)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread.main(ActivityThread.java:3691)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at java.lang.reflect.Method.invokeNative(Native Method)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at java.lang.reflect.Method.invoke(Method.java:507)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at dalvik.system.NativeStart.main(Native Method)
01-29 10:50:09.879: E/AndroidRuntime(12860): Caused by: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860):    at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at java.lang.Double.parseDouble(Double.java:318)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at aid.assistant233.AidAssistant233Activity.SaveMapsToLocalDB(AidAssistant233Activity.java:1149)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at aid.assistant233.AidAssistant233Activity.UpdateApplicationData(AidAssistant233Activity.java:1060)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at aid.assistant233.AidAssistant233Activity.UpdateFromServer(AidAssistant233Activity.java:480)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at aid.assistant233.AidAssistant233Activity.onCreate(AidAssistant233Activity.java:212)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
01-29 1

0:50:09.879: E/AndroidRuntime(12860): ... 11 もっと見る

私が考える主な問題は、次のことに関連しています。

01-29 10:50:09.879: E/AndroidRuntime(12860): Caused by: java.lang.NumberFormatException: 
01-29 10:50:09.879: E/AndroidRuntime(12860):    at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
01-29 10:50:09.879: E/AndroidRuntime(12860):    at java.lang.Double.parseDouble(Double.java:318)

関連するコードは次のとおりです。

for (int i = 0; i < dati.getLength(); i++) {
                    Element element = (Element) dati.item(i);
                    localDB.insertMap(XmlElemValue(element, "Title"), Double.parseDouble(XmlElemValue(element, "Latitude")),  // line 1149
                            Double.parseDouble(XmlElemValue(element, "Longitude")), Integer.parseInt(XmlElemValue(element, "MetriDistanza")),
                            Integer.parseInt(XmlElemValue(element, "MinutiIntervalloControllo")));
                }

Web サービスによって返される xml のタグ latitude は次のとおりです。

<Latitude>43.5729</Latitude>
4

3 に答える 3

2

問題は、呼び出し時に関連付けられたコードにあります

Double.parseDouble(XmlElemValue(element, "Latitude"))

A NumberFormatException文字列に解析可能なdoubleが含まれていない場合は、がスローされます。

に渡す前に値を確認する必要がありますparseDouble。緯度の値は、度分秒(DMS)形式で提供される場合があります。

于 2013-01-29T10:00:18.890 に答える
0

Java が小数点の代わりに小数点のコンマを予期するようにロケールが設定されている可能性があります。これを試して:

NumberFormat nf = NumberFormat.getInstance(Locale.US);
Double doubleValue = nf.parse(XmlElemValue(element, "Latitude")).doubleValue();
于 2013-01-29T10:08:23.353 に答える
0

保持する文字列値であることはLine 1149確かです。問題は、整数/倍精度値ではない値を解析することです。それがあなたが得る理由です。その行を印刷して確認します。(XmlElemValue(element, "Latitude")integer/doubleNumber Format Exception

于 2013-01-29T10:03:43.227 に答える