android - update Database with JSON class crashing -
the update class crashing cant open it, , didn't understan logcat:
07-17 19:28:22.115: d/dalvikvm(3799): gc_for_alloc freed 133k, 23% free 12979k/16808k, paused 254ms, total 278ms 07-17 19:28:22.623: d/dalvikvm(3799): gc_for_alloc freed 15k, 15% free 14345k/16808k, paused 58ms, total 58ms 07-17 19:28:22.666: i/dalvikvm-heap(3799): grow heap (frag case) 16.517mb 2514028-byte allocation 07-17 19:28:22.863: d/dalvikvm(3799): gc_for_alloc freed <1k, 13% free 16800k/19264k, paused 192ms, total 192ms 07-17 19:28:23.003: d/dalvikvm(3799): gc_concurrent freed 0k, 13% free 16800k/19264k, paused 8ms+24ms, total 147ms 07-17 19:28:23.133: d/dalvikvm(3799): gc_for_alloc freed 1380k, 13% free 16801k/19264k, paused 57ms, total 58ms 07-17 19:28:23.173: i/dalvikvm-heap(3799): grow heap (frag case) 18.916mb 2514028-byte allocation 07-17 19:28:23.443: d/dalvikvm(3799): gc_concurrent freed <1k, 12% free 19256k/21720k, paused 109ms+10ms, total 269ms 07-17 19:28:28.693: d/androidruntime(3799): shutting down vm 07-17 19:28:28.703: w/dalvikvm(3799): threadid=1: thread exiting uncaught exception (group=0x40a71930) 07-17 19:28:28.786: e/androidruntime(3799): fatal exception: main 07-17 19:28:28.786: e/androidruntime(3799): android.os.networkonmainthreadexception 07-17 19:28:28.786: e/androidruntime(3799): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1117) 07-17 19:28:28.786: e/androidruntime(3799): @ java.net.inetaddress.lookuphostbyname(inetaddress.java:385) 07-17 19:28:28.786: e/androidruntime(3799): @ java.net.inetaddress.getallbynameimpl(inetaddress.java:236) 07-17 19:28:28.786: e/androidruntime(3799): @ java.net.inetaddress.getallbyname(inetaddress.java:214) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) 07-17 19:28:28.786: e/androidruntime(3799): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465) 07-17 19:28:28.786: e/androidruntime(3799): @ com.example.ahliaevents.jsonparser.makehttprequest(jsonparser.java:62) 07-17 19:28:28.786: e/androidruntime(3799): @ com.example.ahliaevents.editcard$getcarddetails$1.run(editcard.java:131) 07-17 19:28:28.786: e/androidruntime(3799): @ android.os.handler.handlecallback(handler.java:725) 07-17 19:28:28.786: e/androidruntime(3799): @ android.os.handler.dispatchmessage(handler.java:92) 07-17 19:28:28.786: e/androidruntime(3799): @ android.os.looper.loop(looper.java:137) 07-17 19:28:28.786: e/androidruntime(3799): @ android.app.activitythread.main(activitythread.java:5041) 07-17 19:28:28.786: e/androidruntime(3799): @ java.lang.reflect.method.invokenative(native method) 07-17 19:28:28.786: e/androidruntime(3799): @ java.lang.reflect.method.invoke(method.java:511) 07-17 19:28:28.786: e/androidruntime(3799): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 07-17 19:28:28.786: e/androidruntime(3799): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 07-17 19:28:28.786: e/androidruntime(3799): @ dalvik.system.nativestart.main(native method) 07-17 19:28:33.943: i/process(3799): sending signal. pid: 3799 sig: 9 i didn't understand whats written in logcat. has had same problem before?
this code
public class editcard extends activity { edittext txtname; edittext txtposition; edittext txtcollege; edittext txtphone; button btnsave; button btndelete; string cid; // progress dialog private progressdialog pdialog; // json parser class jsonparser jsonparser = new jsonparser(); // single product url private static final string url_card_details = "http://xxx"; // url update product private static final string url_update_card = "http://xxx"; // url delete product private static final string url_delete_card = "http://xxx"; // json node names private static final string tag_success = "success"; private static final string tag_cards = "cards"; private static final string tag_cid = "cid"; private static final string tag_cname = "name"; private static final string tag_position = "position"; private static final string tag_college = "college"; private static final string tag_phone = "phone"; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.edit_card); // save button btnsave = (button) findviewbyid(r.id.savecard); btndelete = (button) findviewbyid(r.id.deletecard); // getting product details intent intent = getintent(); // getting product id (pid) intent cid = i.getstringextra(tag_cid); // getting complete product details in background thread new getcarddetails().execute(); // save button click event btnsave.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // starting background task update product new savecarddetails().execute(); } }); // delete button click event btndelete.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // deleting product in background thread new deletecard().execute(); } }); } /** * background async task complete product details * */ class getcarddetails extends asynctask<string, string, string> { /** * before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(editcard.this); pdialog.setmessage("loading card details. please wait..."); pdialog.setindeterminate(false); pdialog.setcancelable(true); pdialog.show(); } /** * getting product details in background thread * */ protected string doinbackground(string... params) { // updating ui background thread runonuithread(new runnable() { public void run() { // check success tag int success; try { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("cid", cid)); // getting product details making http request // note product details url use request jsonobject json = jsonparser.makehttprequest( url_card_details, "get", params); // check log json response log.d("single product details", json.tostring()); // json success tag success = json.getint(tag_success); if (success == 1) { // received product details jsonarray cardobj = json .getjsonarray(tag_cards); // json array // first product object json array jsonobject card = cardobj.getjsonobject(0); // product pid found // edit text txtname = (edittext) findviewbyid(r.id.editcard1); txtposition = (edittext) findviewbyid(r.id.editcard2); txtcollege= (edittext) findviewbyid(r.id.editcard3); txtphone= (edittext) findviewbyid(r.id.editcard4); // display product data in edittext txtname.settext(card.getstring(tag_cname)); txtposition.settext(card.getstring(tag_position)); txtcollege.settext(card.getstring(tag_college)); txtphone.settext(card.getstring(tag_phone)); }else{ // product pid not found } } catch (jsonexception e) { e.printstacktrace(); } } }); return null; } /** * after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog once got details pdialog.dismiss(); } } /** * background async task save product details * */ class savecarddetails extends asynctask<string, string, string> { /** * before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(editcard.this); pdialog.setmessage("saving card ..."); pdialog.setindeterminate(false); pdialog.setcancelable(true); pdialog.show(); } /** * saving product * */ protected string doinbackground(string... args) { // getting updated data edittexts string name = txtname.gettext().tostring(); string position = txtposition.gettext().tostring(); string college = txtcollege.gettext().tostring(); string phone = txtphone.gettext().tostring(); // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("name", name)); params.add(new basicnamevaluepair("position", position)); params.add(new basicnamevaluepair("college", college)); params.add(new basicnamevaluepair("phone", phone)); // sending modified data through http request // notice update product url accepts post method jsonobject json = jsonparser.makehttprequest(url_update_card, "post", params); // check json success tag try { int success = json.getint(tag_success); if (success == 1) { // updated intent = getintent(); // send result code 100 notify product update setresult(100, i); finish(); } else { // failed update product } } catch (jsonexception e) { e.printstacktrace(); } return null; } /** * after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog once product uupdated pdialog.dismiss(); } } /***************************************************************** * background async task delete product * */ class deletecard extends asynctask<string, string, string> { /** * before starting background thread show progress dialog * */ @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(editcard.this); pdialog.setmessage("deleting product..."); pdialog.setindeterminate(false); pdialog.setcancelable(true); pdialog.show(); } /** * deleting product * */ protected string doinbackground(string... args) { // check success tag int success; try { // building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("cid", cid)); // getting product details making http request jsonobject json = jsonparser.makehttprequest( url_delete_card, "post", params); // check log json response log.d("delete card", json.tostring()); // json success tag success = json.getint(tag_success); if (success == 1) { // product deleted // notify previous activity sending code 100 intent = getintent(); // send result code 100 notify product deletion setresult(100, i); finish(); } } catch (jsonexception e) { e.printstacktrace(); } return null; } /** * after completing background task dismiss progress dialog * **/ protected void onpostexecute(string file_url) { // dismiss dialog once product deleted pdialog.dismiss(); } } } this code check out don't know whats wrong it
you getting networkonmainthreadexception. doing network related operation on ui thread.
use thread or use asynctask.
the exception thrown when application attempts perform networking operation on main thread. thrown applications targeting honeycomb sdk or higher.
http://developer.android.com/reference/android/os/asynctask.html
you can check tutorial
http://www.vogella.com/articles/androidbackgroundprocessing/article.html
Comments
Post a Comment