我在companydetails.java中有这个代码,并且每次崩溃
case R.id.textView:
if (!((String) this.companyMap.get("latitude")).equals("") || !
((String) this.companyMap.get("longitude")).equals("")) {
intent = new Intent(this, MapActivity.class);
intent.putExtra("latitude", Double.parseDouble((String)
this.companyMap.get("latitude")));
intent.putExtra("longitude", Double.parseDouble((String)
this.companyMap.get("longitude")));
intent.putExtra("company", (String)
this.companyMap.get("company"));
break;
}
我收到了这些错误
设备日志
00:43:49 E AndroidRuntime : FATAL EXCEPTION: main
00:43:49 E AndroidRuntime : Process: com.mra.tnow, PID: 9186
00:43:49 E AndroidRuntime : java.lang.NumberFormatException: For input string: "28°23′50"
00:43:49 E AndroidRuntime : at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306)
00:43:49 E AndroidRuntime : at java.lang.Double.parseDouble(Double.java:547)
00:43:49 E AndroidRuntime : at com.marwan.tabuknow.CompanyDetails.onClick(CompanyDetails.java:368)
00:43:49 E AndroidRuntime : at android.view.View.performClick(View.java:5637)
00:43:49 E AndroidRuntime : at android.view.View$PerformClick.run(View.java:22429)
00:43:49 E AndroidRuntime : at android.os.Handler.handleCallback(Handler.java:751)
00:43:49 E AndroidRuntime : at android.os.Handler.dispatchMessage(Handler.java:95)
00:43:49 E AndroidRuntime : at android.os.Looper.loop(Looper.java:154)
00:43:49 E AndroidRuntime : at android.app.ActivityThread.main(ActivityThread.java:6121)
00:43:49 E AndroidRuntime : at java.lang.reflect.Method.invoke(Native Method)
00:43:49 E AndroidRuntime : at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
00:43:49 E AndroidRuntime : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
答案 0 :(得分:0)
您的问题是,您尝试将String
格式"28°23′50"
解析为Double
,这是不可能的。
一种解决方案是将坐标保存为(例如纬度= 32.82108,经度= -16.975873)
或者使用您的坐标但不将值解析为Double
。
答案 1 :(得分:0)
你试图解析28°23'50到一个双。 将此参数作为字符串传递或转换为WGS-84坐标,这是一个双精度坐标。 这取决于您的要求。