android - NetworkOnMainThreadException on 3.0 and higher -


i did learn on article that, on 3.0 , higher, 1 has use asynctask preform network activity. knowing this, used asynctask call on json request, , main class looks this:

mainpage.java

public class dothefare extends asynctask<void,void,void> {      @override     protected void onpreexecute() {         // todo auto-generated method stub         progress = new progressdialog(mainpage.this);         progress.setprogressstyle(progressdialog.style_spinner);         progress.setmessage("processing request ...");         progress.show();         userfunctions users = new userfunctions();         jobj = users.distanceget(location.gettext().tostring(), destination.gettext().tostring());         super.onpreexecute();     }      @override     protected void doinbackground(void... arg0) {         // todo auto-generated method stub         try{             jarr = jobj.getjsonarray("rows");             jobj1 = jarr.getjsonobject(0);             jarr2 = jobj1.getjsonarray("elements");             jobj2 = jarr2.getjsonobject(0);             jobj3 = jobj2.getjsonobject("distance");             distance_value = jobj3.getstring("text");             string value = jobj3.getstring("value");             sharedpreferences getprefs = preferencemanager.getdefaultsharedpreferences(getbasecontext());             string sf = getprefs.getstring("startfare", "10");             string pm = getprefs.getstring("perkilo", "27");             startfare = double.parsedouble(sf);             perkilo = double.parsedouble(pm);             permeter=perkilo/5;             int parsedistance = integer.parseint(value);             double fare = startfare+((parsedistance/200)*permeter);             int roundedvalue = (int)math.round(fare);             //fare send             taxifare = string.valueof(roundedvalue);             log.i("fare estimate", taxifare);         }catch(exception e){             e.printstacktrace();         }         return null;      }      @override     protected void onpostexecute(void result) {         // todo auto-generated method stub         progress.dismiss();         from_split = location.gettext().tostring();         to_split = destination.gettext().tostring();         if(from_split.contains(","))         {             from_fill = from_split.split(",");         }         else         {             from_fill = from_split.split(" ");         }         if(to_split.contains(","))         {             to_fill = to_split.split(",");         }         else         {             to_fill = to_split.split(" ");         }          send_location=from_fill[0];         send_destination=to_fill[0];         send_fare = taxifare;         send_distance = distance_value;         if(ismode.equalsignorecase(""))         {             calendar c = calendar.getinstance();             int hours = c.get(calendar.hour_of_day);             if(hours<6)                 ismode = "nmode";             else if(hours>=21)                 ismode = "nmode";             else                 ismode = "dmode";         }         intent toresults = new intent(mainpage.this, resultsdisplay.class);         bundle extras = new bundle();         extras.putstring("to", send_location);         extras.putstring("from", send_destination);         extras.putstring("fare", send_fare);         extras.putstring("distance", send_distance);         extras.putstring("gmapfrom", from_split.tostring());         extras.putstring("gmapto", to_split.tostring());         extras.putstring("mode",ismode);         toresults.putextras(extras);         startactivity(toresults);         super.onpostexecute(result);     }  } 

in activity have onclicklistener calls asynctask program giving me following

05-10 03:02:19.823: e/androidruntime(1815): fatal exception: main 05-10 03:02:19.823: e/androidruntime(1815): android.os.networkonmainthreadexception 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1117) 05-10 03:02:19.823: e/androidruntime(1815):     @ java.net.inetaddress.lookuphostbyname(inetaddress.java:385) 05-10 03:02:19.823: e/androidruntime(1815):     @ java.net.inetaddress.getallbynameimpl(inetaddress.java:236) 05-10 03:02:19.823: e/androidruntime(1815):     @ java.net.inetaddress.getallbyname(inetaddress.java:214) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) 05-10 03:02:19.823: e/androidruntime(1815):     @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.example.calculator_taxi_fare.functions.jsonparser.getjsonfromurl(jsonparser.java:56) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.example.calculator_taxi_fare.functions.userfunctions.distanceget(userfunctions.java:28) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.example.calculator_taxi_fare.mainpage$dothefare.onpreexecute(mainpage.java:251) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.asynctask.executeonexecutor(asynctask.java:586) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.asynctask.execute(asynctask.java:534) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.example.calculator_taxi_fare.mainpage$6.onclick(mainpage.java:230) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.view.view.performclick(view.java:4202) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.view.view$performclick.run(view.java:17340) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.handler.handlecallback(handler.java:725) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.handler.dispatchmessage(handler.java:92) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.os.looper.loop(looper.java:137) 05-10 03:02:19.823: e/androidruntime(1815):     @ android.app.activitythread.main(activitythread.java:5039) 05-10 03:02:19.823: e/androidruntime(1815):     @ java.lang.reflect.method.invokenative(native method) 05-10 03:02:19.823: e/androidruntime(1815):     @ java.lang.reflect.method.invoke(method.java:511) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 05-10 03:02:19.823: e/androidruntime(1815):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 05-10 03:02:19.823: e/androidruntime(1815):     @ dalvik.system.nativestart.main(native method)     location.setonitemclicklistener(new onitemclicklistener()     { 

am implementing right way ?? please help!

i have implemented google placesautocomplete in app, in results/suggestions show not select able on 3.0 or higher unexpected value nativegetenabledtags: 0 error shows up. code follows:

location.setonitemclicklistener(new onitemclicklistener() {

@override public void onitemclick(adapterview<?> adapterview, view view, int position, long id) {         // todo auto-generated method stub         autolocation = (places) adapterview.getitematposition(position);         location.settext(autolocation.description);         location.clearfocus();         destination.requestfocus();         log.d("autocompletetask", location.gettext().tostring());             } }); destination.setadapter(new placesautocompleteadapter(this, r.layout.list_item)); destination.setonitemclicklistener(new onitemclicklistener()  {  @override public void onitemclick(adapterview<?> adapterview, view view, int position, long id) {             // todo auto-generated method stub         autodestination = (places) adapterview.getitematposition(position);         destination.settext(autodestination.description);         destination.clearfocus();         calculate.requestfocus();         log.d("autocompletetask2", destination.gettext().tostring());             } }); 

it seems code getting data network. have put in workthread, put on doinbackground();

        jobj = users.distanceget(location.gettext().tostring(), destination.gettext().tostring()); 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -