Я очень новичок в Java и Android Studio.java.lang.NullPointerException: попытка вызвать метод интерфейса 'int java.util.List.size()' на ссылке нулевого объекта
Я использую этот пример кода
http://javapapers.com/android/draw-path-on-google-maps-android-api/
Мой проект компилируется и запускается на следующий пункт. Я попробовал режим отладки, и я вижу, что отображаются карты Google Map и отображаются 3 маркера. Затем я получаю следующее сообщение.
9-03 00:06:04.459 19022-19022/nyc.mymaptest3 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: nyc.mymaptest3, PID: 19022
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at nyc.mymaptest3.PathGoogleMapActivity$ParserTask.onPostExecute(PathGoogleMapActivity.java:128)
at nyc.mymaptest3.PathGoogleMapActivity$ParserTask.onPostExecute(PathGoogleMapActivity.java:101)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5938)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Я чувствую, что возвращаемые маршруты пусты/null, и я не знаю, как отлаживать это дальше.
линия 101 начинается здесь >>>
private class ParserTask extends
AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {
@Override
protected List<List<HashMap<String, String>>> doInBackground(
String... jsonData) {
JSONObject jObject;
List<List<HashMap<String, String>>> routes = null;
try {
jObject = new JSONObject(jsonData[0]);
PathJSONParser parser = new PathJSONParser();
routes = parser.parse(jObject);
} catch (Exception e) {
e.printStackTrace();
}
return routes;
}
линия 128 показано ниже >>>
protected void onPostExecute(List<List<HashMap<String, String>>> routes) {
ArrayList<LatLng> points = null;
PolylineOptions polyLineOptions = null;
// traversing through routes
for (int i = 0; i < routes.size(); i++) {
points = new ArrayList<LatLng>();
polyLineOptions = new PolylineOptions();
List<HashMap<String, String>> path = routes.get(i);
Line 128 for (int j = 0; j < path.size(); j++) {
HashMap<String, String> point = path.get(j);
double lat = Double.parseDouble(point.get("lat"));
double lng = Double.parseDouble(point.get("lng"));
LatLng position = new LatLng(lat, lng);
points.add(position);
}
polyLineOptions.addAll(points);
polyLineOptions.width(2);
polyLineOptions.color(Color.BLUE);
}
googleMap.addPolyline(polyLineOptions);
}
Ну, похоже, что маршруты не являются нулевыми, что хорошо, но вы можете посмотреть, почему route.get (i) для конкретного i является нулевым. Ответ здесь не представляется возможным в вашем парсере. –
@AndrewBrooke 'routes'' '' null' должен ломаться первым 'for'. Вероятно, это не 'null', но содержимое неожиданно. В любом случае, трудно сказать без отладки. – poss
Да, я неправильно понял это. Тем не менее, может возникнуть ошибка при анализе JSON, вы должны проверить, действительно ли это: http://jsonlint.com/ –