2016-04-03 119 views
0

我希望有人能帶領我走向正確的方向。今天我注意到,我的應用程序試圖使用谷歌地圖時停止工作。我的應用程序運行完美無瑕。我沒有更新代碼中的任何內容。它只是停止工作。Google Maps API自行停止工作

這裏是調試:

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference 
                    at se.xflash.tidsboken.CreateNewJob.onMapReady(CreateNewJob.java:725) 
                    at com.google.android.gms.maps.MapFragment$zza$1.zza(Unknown Source) 
                    at com.google.android.gms.maps.internal.zzl$zza.onTransact(Unknown Source) 
                    at android.os.Binder.transact(Binder.java:387) 
                    at com.google.android.gms.maps.internal.v$a$a.a(:com.google.android.gms.alldynamite:82) 
                    at maps.ei.bu$6.run(Unknown Source) 
                    at android.os.Handler.handleCallback(Handler.java:739) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:224) 
                    at android.app.ActivityThread.main(ActivityThread.java:5514) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

我不明白爲什麼我所有的突然得到一個NullPointerException,它dosnt做任何SENCE!

這裏是它的抱怨代碼片段。

public void onMapReady(GoogleMap map) { 


    DatabaseHandlerSettings db = new DatabaseHandlerSettings(getActivity()); 
    PersonInfoDatabase info = db.getContact(1); 
    String adressInfo = info.getAdress(); 
    String ortInfo = info.getOrt(); 


    String adress = (adressInfo + ", " + ortInfo); 

    Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
    List<Address> addresses = null; 

    try { 
     addresses = geocoder.getFromLocationName(adress, 1); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Address address = addresses.get(0); 
    double longitudeStart = address.getLongitude(); 
    double latitudeStart = address.getLatitude(); 

    LatLng location = new LatLng(latitudeStart, longitudeStart); 
    map.setMyLocationEnabled(true); 
    map.getUiSettings().setZoomControlsEnabled(true); 


    map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 12)); 

我的意思是,我的應用程序如何才能停止工作?它在市場上。我明白,如果你不明白我的意思。

+1

你應該記錄和分析異常,而不僅僅是'try catch e.printStackTrace();'當發生異常時,通常它沒有任何意義......所以我假設'NullpointerException'是一個隨後的錯誤。 –

+1

這個問題與'GoogleMap'的實現無關。根據你的日誌,當它試圖執行get(int)方法時,應用程序崩潰。您上傳的代碼沒有該部分。所以可能你可以在你的問題中添加正確的代碼部分。 –

+0

@SaumikBhattacharya問題中的代碼實際上確實包含違規行,它是這一行:'Address address = addresses.get(0);' –

回答

1

以下代碼:

List<Address> addresses = null; 

try { 
    addresses = geocoder.getFromLocationName(adress, 1); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Address address = addresses.get(0); 

如果有IOException異常 - 地址名單仍然會。所以調用addresses.get(0)將導致空指針異常

+0

謝謝。今天早上,即使更改代碼,應用程序仍然在工作。所以即時猜測問題是在別的地方,但是,我會研究這個NullPointer,以便下一次這個時候。謝謝 – user1512762