2014-11-21 73 views
0

我在這個編程中還是個新手。我試圖將marker.get(「title」)分配給標題數組。如果我運行應用程序,就不會有錯誤標記。感謝您的幫助。 Android應用程序

編輯在實際代碼中沒有**。我只想指出錯誤的位置。

@Override 
    protected void onPostExecute(List<HashMap<String, String>> result) { 
     for(int i=0; i<result.size();i++){ 
      HashMap<String, String> marker = result.get(i); 
      LatLng latlng = new LatLng(Double.parseDouble(marker.get("lat")), Double.parseDouble(marker.get("lng"))); 
      PlaceName = marker.get("title"); 
      Address = marker.get("FullAddress"); 
      telno = marker.get("telno"); 
      addMarker(latlng, PlaceName, Address); 

      **for (int x=0;x<=i;x++) 
      { 
       title[x]=marker.get("title"); 
      }** 

     } 
    } 
} 

固定logcat的錯誤

11-21 10:16:09.273: E/AndroidRuntime(30994): FATAL EXCEPTION: main 
11-21 10:16:09.273: E/AndroidRuntime(30994): Process: com.mha.katpenang, PID: 30994 
11-21 10:16:09.273: E/AndroidRuntime(30994): java.lang.NullPointerException 
11-21 10:16:09.273: E/AndroidRuntime(30994): at com.mha.katpenang.MainActivity$ParserTask.onPostExecute(MainActivity.java:252) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at com.mha.katpenang.MainActivity$ParserTask.onPostExecute(MainActivity.java:1) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.os.AsyncTask.finish(AsyncTask.java:632) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.os.Handler.dispatchMessage(Handler.java:102) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.os.Looper.loop(Looper.java:136) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at android.app.ActivityThread.main(ActivityThread.java:5034) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at java.lang.reflect.Method.invokeNative(Native Method) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at java.lang.reflect.Method.invoke(Method.java:515) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621) 
11-21 10:16:09.273: E/AndroidRuntime(30994): at dalvik.system.NativeStart.main(Native Method) 

:標題可變大小需要在聲明集。

+0

可以發佈錯誤日誌嗎? – feresr 2014-11-21 02:13:52

+0

你的標題初始化了嗎?請至少發佈錯誤日誌(logcat),或者只有上帝可以猜測出錯的地方。 – Qianqian 2014-11-21 02:14:40

+0

只需要清楚,在logcat中,每當發生崩潰時,日誌都將填充紅色文本。獲取併發布在這裏。查看該文本是一個好習慣,因爲它會以某種方式描述錯誤。 – MDragon00 2014-11-21 02:19:12

回答

0

檢查你是如何定義陣列title。它應該是這樣的:

String [] title = new String[whateverSize]; // with your chosen size 

跳上它有助於

0

我認爲你必須把空檢查做在獲取任何有價值的操作之前喜歡自己正在做

 LatLng latlng = new LatLng(Double.parseDouble(marker.get("lat")), Double.parseDouble(marker.get("lng"))); 

最好如果你喜歡: -

@Override 
    protected void onPostExecute(List<HashMap<String, String>> result) { 
     if(result != null){ 
     for(int i=0; i<result.size();i++){ 
      HashMap<String, String> marker = result.get(i); 

      LatLng latlng = new LatLng(Double.parseDouble(marker.get("lat")!=null ? 
      marker.get("lat") : "0.0"), Double.parseDouble(marker.get("lng") !=null? 
      marker.get("lng") :"0.0")); 

      PlaceName = marker.get("title"); 
      Address = marker.get("FullAddress"); 
      telno = marker.get("telno"); 
      addMarker(latlng, PlaceName, Address); 

      **for (int x=0;x<=i;x++) 
      { 
       title[x]=marker.get("title"); 
      }** 

     } 
    } 

}