2011-05-11 19 views
0

我使用後臺線程從Sqlite數據庫讀取一些GPS數據......並將其存儲在某些GeoPoints中.....在完成讀取數據我想使用一個意圖,以查看該數據描述的路線。使用谷歌地圖試圖在兩個位置之間查看路線時的問題

這裏是我的代碼:

protected List<GeoPoint> doInBackground(DBAdapter... db) { 
    try { 
     db[0].openDataBase(); 
     Cursor c = db[0].getAllData(); 

     if (c.moveToFirst()) { 
      do { 
       longitude = Integer.parseInt(c.getString(0)); 
       latitude = Integer.parseInt(c.getString(1)); 
       p = new GeoPoint(latitude, longitude); 
       geoPointsArray.add(p); 
      } while (c.moveToNext()); 
     } 
     c.close(); 
     db[0].close(); 
    } catch (Exception e) { 
     Log.d("Eroare", "doInBackground", e); 
    } 
    return geoPointsArray; 
} 

protected void onPostExecute(List<GeoPoint> geoPointsArray) { 
    int i = geoPointsArray.size(); 
    srcPlace = geoPointsArray.get(1); 
    destPlace = geoPointsArray.get(i); 
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
      Uri.parse(" http://maps.google.com?t=k&saddr=" + srcPlace 
        + "&daddr=" + destPlace)); 
    startActivity(intent); 
} 

可是事情,什麼地方去可怕的錯誤,我得到了logcat中的下一個輸出:

Uncaught handler: thread main exiting due to uncaught exception 
java.lang.IndexOutOfBoundsException: Invalid location 4180, size is 4180 
    at java.util.ArrayList.get(ArrayList.java:341) 
at test.android.screen_database$InitTask.onPostExecute(screen_database.java:201) 
at test.android.screen_database$InitTask.onPostExecute(screen_database.java:1) 
    at android.os.AsyncTask.finish(AsyncTask.java:417) 
at android.os.AsyncTask.access$300(AsyncTask.java:127) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 

不要忘了我想看到的路徑這兩點之間的地圖...所以如果你有關於URL的建議比歡迎!

UPDATE:這是我第二FC

thread exiting with uncaught exception (group=0x4001b188) 
Uncaught handler: thread main exiting due to uncaught exception 
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat= http://maps.google.com?t=k&saddr=48856838,2351068&daddr=48927049,2357270 } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
at android.app.Activity.startActivityForResult(Activity.java:2749) 
at android.app.Activity.startActivity(Activity.java:2855) 
at test.android.screen_database$InitTask.onPostExecute(screen_database.java:205) 
at test.android.screen_database$InitTask.onPostExecute(screen_database.java:1) 
    at android.os.AsyncTask.finish(AsyncTask.java:417) 
    at android.os.AsyncTask.access$300(AsyncTask.java:127) 
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 

回答

2

的數組索引是基於零。如果您的尺寸爲i,則需要致電destPlace = geoPointsArray.get(i - 1);。源應該是0而不是1

protected void onPostExecute(List<GeoPoint> geoPointsArray) { 
    int i = geoPointsArray.size(); 
    srcPlace = geoPointsArray.get(0); 
    destPlace = geoPointsArray.get(i - 1); 
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
      Uri.parse(" http://maps.google.com?t=k&saddr=" + srcPlace 
        + "&daddr=" + destPlace)); 
    startActivity(intent); 
} 
+0

好,反而是正確的網址顯示的路線? – adrian 2011-05-11 18:33:26

+0

試試吧。我會登錄的網址,並在正常的瀏覽器中測試... – WarrenFaith 2011-05-11 18:39:24

+0

嗯,我解決了,但我仍然得到一個錯誤....我更新了我的問題...你有什麼線索現在有什麼錯誤?? – adrian 2011-05-11 18:39:27

1

你的錯誤是在

int i = geoPointsArray.size(); 
     srcPlace = geoPointsArray.get(1); 
     destPlace = geoPointsArray.get(i); 

必須destPlace = geoPointsArray.get(i-1);

相關問題