2016-10-02 70 views
-1

最近我正在做一个应用程序,它有一个导航抽屉,我有一些项目极其应该打开地图活动,但是当这样做时我的应用程序停止,告诉我下面的错误:试图在点击导航抽屉中的项目后启动地图活动

FATAL EXCEPTION: main 
Process: jocadoci.soloordena, PID: 2897 
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
    at java.util.ArrayList.get(ArrayList.java:308) 
    at jocadoci.soloordena.MapsItaly.geoLocate(MapsItaly.java:99) 
    at jocadoci.soloordena.MapsItaly.onMapReady(MapsItaly.java:73) 
    at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) 
    at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) 
    at android.os.Binder.transact(Binder.java:380) 
    at wl.a(:com.google.android.gms.DynamiteModulesB:82) 
    at maps.ad.t$5.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:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    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:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

我认为错误是因为地图的活动我有透过Android Studio中创建的ArrayList.java下面的类。

private void geoLocate() throws IOException { 
    String location = "comida rapida y pizza"; 
    Geocoder gc = new Geocoder(this); 
    List<Address> list = new ArrayList<>(gc.getFromLocationName(location, 1)); 
    Address address = list.get(0); 
    String locality = address.getLocality(); 

    Toast.makeText(this, locality, Toast.LENGTH_SHORT).show(); 

    double lat = address.getLatitude(); 
    double lng = address.getLongitude(); 
    goToLocationZoom(lat, lng, 16); 

} 

但我不确定错误是什么。我很欣赏任何帮助和提前致谢:)

回答

0

Geocoder.getFromLocationName将返回空列表或空列表如果没有找到匹配或没有后端服务可用(documentation)。

所以,解决你的问题,你必须检查是否有可用的结果:

private void geoLocate() throws IOException { 
    String location = "comida rapida y pizza"; 
    Geocoder gc = new Geocoder(this); 
    List<Address> list = new ArrayList<>(gc.getFromLocationName(location, 1)); 

    if (list != null && list.size() > 0) { 
     Address address = list.get(0); 
     String locality = address.getLocality(); 

     Toast.makeText(this, locality, Toast.LENGTH_SHORT).show(); 

     double lat = address.getLatitude(); 
     double lng = address.getLongitude(); 
     goToLocationZoom(lat, lng, 16); 
    } else { 
     Toast.makeText(this, "No results found", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

感谢的人,这样才有利于能看到我的地图活动。你知道怎么样的字符串实际显示像谷歌地图的位置吗? –