我想實現Google Places API,但它一直髮送一個java.lang.nullpointerexception。我得到了這個網站的代碼:http://www.androidhive.info/2012/08/android-working-with-google-places-and-maps-tutorial/谷歌地方API返回java..lang.nullpointerexception
從我可以收集我發送到一些谷歌服務器的網址,並得到一個迴應。該響應採用JSON格式,然後將其解析爲我的特定「位置」對象。我認爲在這個分析階段會發生一些事情。在網站中,他們使用了一些中間對象PlacesList,我認爲這是出錯的地方,因爲我不理解它。
PlacesList:
public class PlacesList implements Serializable {
@Key
public String status;
@Key
public List<Locations> results;
}
谷歌搜索:
public PlacesList search(double latitude, double longitude, double radius)
throws Exception {
this._latitude = latitude;
this._longitude = longitude;
this._radius = radius;
try {
HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
HttpRequest request = httpRequestFactory
.buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
request.getUrl().put("key", API_KEY);
request.getUrl().put("location", _latitude + "," + _longitude);
request.getUrl().put("radius", _radius); // in meters
request.getUrl().put("sensor", "false");
PlacesList list = request.execute().parseAs(PlacesList.class);
Log.i("placelist.class", list.toString());
// Check log cat for places response status
// Log.i("Places Status", "" + list.status);
return list;
} catch (HttpResponseException e) {
Log.e("Error:", e.getMessage());
return null;
}
}
主
從MainActivity System.err的(6447):atcom.example.mapmapagain.MainActivity.onCreate( MainActivity.java:86)==
try {
PlacesList places = ps.search(curr_lat, curr_longitude, 100.0);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
這裏是logcat的:
04-26 19:10:52.839: W/System.err(4156): android.os.NetworkOnMainThreadException
04-26 19:10:52.899: W/System.err(4156): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
04-26 19:10:52.899: W/System.err(4156): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
04-26 19:10:52.899: W/System.err(4156): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
04-26 19:10:52.899: W/System.err(4156): at java.net.InetAddress.getAllByName(InetAddress.java:214)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
04-26 19:10:52.899: W/System.err(4156): at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165)
04-26 19:10:52.899: W/System.err(4156): at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:88)
04-26 19:10:52.899: W/System.err(4156): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:814)
04-26 19:10:52.909: W/System.err(4156): at com.example.mapmapagain.PlaceSearch.search(PlaceSearch.java:64)
04-26 19:10:52.909: W/System.err(4156): at com.example.mapmapagain.MainActivity.onCreate(MainActivity.java:86)
04-26 19:10:52.909: W/System.err(4156): at android.app.Activity.performCreate(Activity.java:5104)
04-26 19:10:52.909: W/System.err(4156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-26 19:10:52.909: W/System.err(4156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-26 19:10:52.909: W/System.err(4156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-26 19:10:52.909: W/System.err(4156): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-26 19:10:52.909: W/System.err(4156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-26 19:10:52.909: W/System.err(4156): at android.os.Handler.dispatchMessage(Handler.java:99)
04-26 19:10:52.909: W/System.err(4156): at android.os.Looper.loop(Looper.java:137)
04-26 19:10:52.909: W/System.err(4156): at android.app.ActivityThread.main(ActivityThread.java:5039)
04-26 19:10:52.909: W/System.err(4156): at java.lang.reflect.Method.invokeNative(Native Method)
04-26 19:10:52.909: W/System.err(4156): at java.lang.reflect.Method.invoke(Method.java:511)
04-26 19:10:52.909: W/System.err(4156): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-26 19:10:52.909: W/System.err(4156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-26 19:10:52.909: W/System.err(4156): at dalvik.system.NativeStart.main(Native Method)
感謝您的幫助。
你在模擬器上工作嗎? – ACengiz 2013-04-26 20:09:48
請發佈確切的堆棧跟蹤和其他所有內容 – cbrulak 2013-04-26 20:10:46
您能映射粘貼的代碼和行號嗎?就像Activity.java:5104 ==「PlacesList list = request.execute()。parseAs(PlacesList.class);」 ? – cbrulak 2013-04-26 20:21:20