2016-04-03 88 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