IndexOutOfBoundsException showing while running my android program -


i doing android map oriented project. wrote code display direction between 2 places, works in lower android versions such 2.0, 2.2, etc. not working on android 4.0 , higher. when run code in android 4.0 shows indexoutofboundsexception.

my class

import java.io.inputstream; import java.util.arraylist; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import org.apache.http.httpresponse; import org.apache.http.client.httpclient; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.protocol.basichttpcontext; import org.apache.http.protocol.httpcontext; import org.w3c.dom.document; import org.w3c.dom.node; import org.w3c.dom.nodelist; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.point; import android.os.bundle; import android.widget.button; import com.google.android.maps.geopoint; import com.google.android.maps.mapactivity; import com.google.android.maps.mapcontroller; import com.google.android.maps.mapview; import com.google.android.maps.overlay;  public class locationactivity extends mapactivity {         mapview mv;          mapcontroller mc;          button save, cancel;          @override         protected void oncreate(bundle savedinstancestate) {                 super.oncreate(savedinstancestate);                 setcontentview(r.layout.map_places);                 mapview mv = (mapview)findviewbyid(r.id.mapview);                 mv.setbuiltinzoomcontrols(true);                 mapcontroller mc = mv.getcontroller();                 arraylist<geopoint> all_geo_points = getdirections(10.154929, 76.390316, 10.015861, 76.341867);                 geopoint moveto = all_geo_points.get(0);                 mc.animateto(moveto);                 mc.setzoom(12);                 mv.getoverlays().add(new myoverlay(all_geo_points));         }          public class myoverlay extends overlay {                 private arraylist<geopoint> all_geo_points;                  public myoverlay(arraylist<geopoint> allgeopoints) {                         super();                         this.all_geo_points = allgeopoints;                 }                  @override                 public boolean draw(canvas canvas, mapview mv, boolean shadow, long when) {                         super.draw(canvas, mv, shadow);                         drawpath(mv, canvas);                         return true;                 }                  public void drawpath(mapview mv, canvas canvas) {                         int xprev = -1, yprev = -1, xnow = -1, ynow = -1;                         paint paint = new paint();                         paint.setcolor(color.blue);                         paint.setstyle(paint.style.fill_and_stroke);                         paint.setstrokewidth(4);                         paint.setalpha(100);                         if (all_geo_points != null) (int = 0; < all_geo_points.size() - 4; i++) {                                 geopoint gp = all_geo_points.get(i);                                 point point = new point();                                 mv.getprojection().topixels(gp, point);                                 xnow = point.x;                                 ynow = point.y;                                 if (xprev != -1) {                                         canvas.drawline(xprev, yprev, xnow, ynow, paint);                                 }                                 xprev = xnow;                                 yprev = ynow;                         }                 }         }          public static arraylist<geopoint> getdirections(double lat1, double lon1, double lat2, double lon2) {                 string url = "http://maps.googleapis.com/maps/api/directions/xml?origin=" + lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2                                 + "&sensor=false&units=metric";                 string tag[] = {"lat", "lng"};                 arraylist<geopoint> list_of_geopoints = new arraylist<geopoint>();                 httpresponse response = null;                 try {                         httpclient httpclient = new defaulthttpclient();                         httpcontext localcontext = new basichttpcontext();                         httppost httppost = new httppost(url);                         response = httpclient.execute(httppost, localcontext);                         inputstream in = response.getentity().getcontent();                         documentbuilder builder = documentbuilderfactory.newinstance().newdocumentbuilder();                         document doc = builder.parse(in);                         if (doc != null) {                                 nodelist nl1, nl2;                                 nl1 = doc.getelementsbytagname(tag[0]);                                 nl2 = doc.getelementsbytagname(tag[1]);                                 if (nl1.getlength() > 0) {                                         list_of_geopoints = new arraylist<geopoint>();                                         (int = 0; < nl1.getlength(); i++) {                                                 node node1 = nl1.item(i);                                                 node node2 = nl2.item(i);                                                 double lat = double.parsedouble(node1.gettextcontent());                                                 double lng = double.parsedouble(node2.gettextcontent());                                                 list_of_geopoints.add(new geopoint((int) (lat * 1e6), (int) (lng * 1e6)));                                         }                                 } else {                                         // no points found                                 }                         }                 } catch (exception e) {                         e.printstacktrace();                 }                 return list_of_geopoints;         }          @override         protected boolean isroutedisplayed() {                 // todo auto-generated method stub                 return true;         } } 

my logcat

03-01 19:05:19.180: e/androidruntime(2839): fatal exception: main 03-01 19:05:19.180: e/androidruntime(2839): java.lang.runtimeexception: unable start activity componentinfo{com.kodspider.parkon/com.kodspider.parkon.locationactivity}: java.lang.indexoutofboundsexception: invalid index 0, size 0 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.activitythread.performlaunchactivity(activitythread.java:2059) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.activitythread.startactivitynow(activitythread.java:1900) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.localactivitymanager.movetostate(localactivitymanager.java:135) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.localactivitymanager.startactivity(localactivitymanager.java:347) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.widget.tabhost$intentcontentstrategy.getcontentview(tabhost.java:694) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.widget.tabhost.setcurrenttab(tabhost.java:358) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.widget.tabhost$2.ontabselectionchanged(tabhost.java:150) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.widget.tabwidget$tabclicklistener.onclick(tabwidget.java:546) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.view.view.performclick(view.java:4084) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.view.view$performclick.run(view.java:16966) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.os.handler.handlecallback(handler.java:615) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.os.handler.dispatchmessage(handler.java:92) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.os.looper.loop(looper.java:137) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.activitythread.main(activitythread.java:4745) 03-01 19:05:19.180: e/androidruntime(2839):     @ java.lang.reflect.method.invokenative(native method) 03-01 19:05:19.180: e/androidruntime(2839):     @ java.lang.reflect.method.invoke(method.java:511) 03-01 19:05:19.180: e/androidruntime(2839):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786) 03-01 19:05:19.180: e/androidruntime(2839):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 03-01 19:05:19.180: e/androidruntime(2839):     @ dalvik.system.nativestart.main(native method) 03-01 19:05:19.180: e/androidruntime(2839): caused by: java.lang.indexoutofboundsexception: invalid index 0, size 0 03-01 19:05:19.180: e/androidruntime(2839):     @ java.util.arraylist.throwindexoutofboundsexception(arraylist.java:251) 03-01 19:05:19.180: e/androidruntime(2839):     @ java.util.arraylist.get(arraylist.java:304) 03-01 19:05:19.180: e/androidruntime(2839):     @ com.kodspider.parkon.locationactivity.oncreate(locationactivity.java:43) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.activity.performcreate(activity.java:5008) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1079) 03-01 19:05:19.180: e/androidruntime(2839):     @ android.app.activitythread.performlaunchactivity(activitythread.java:2023) 03-01 19:05:19.180: e/androidruntime(2839):     ... 18 more 

so, basically, getdirections() returning empty arraylist, , you're trying access first item.

try understand why method returning empty set , fix that.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -