android - Error occurs while executing doInBackground inside asynctask -
this question has reply here:
what null pointer exception, , how prepare it? 12 answersi using aynctask create api phone call build chart of bitcoin values using blockchain.info api , android achartengine library.
through deugging see api phone call successful , json info gets pulled, reason crashes , logcat gives me error "an error occurred while executing doinbackground. know cannot access ui elements in doinbackground, not trying that, know might wrong here?
public class graphactivity extends activity { private graphicalview m_chart; private xymultipleseriesdataset m_dataset = new xymultipleseriesdataset(); private xymultipleseriesrenderer m_renderer = new xymultipleseriesrenderer(); private xyseries m_currentseries; private xyseriesrenderer m_currentrenderer; private void initchart() { m_currentseries = new xyseries("bitcoin price"); m_dataset.addseries(m_currentseries); m_currentrenderer = new xyseriesrenderer(); m_renderer.addseriesrenderer(m_currentrenderer); } private void addbtcpricedata(xycoords[] coords) { int length = coords.length; for(int = 0; < length; ++i) { m_currentseries.add(coords[i].x, coords[i].y); } } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_graph); } @override protected void onresume() { super.onresume(); new retrievebtccharttask().execute("https://blockchain.info/charts/market-price?format=json"); /*linearlayout layout = (linearlayout) findviewbyid(r.id.chart); if(m_chart == null) { initchart(); addsampledata(); m_chart = chartfactory.getcubelinechartview(this,m_dataset, m_renderer, 0.3f); layout.addview(m_chart); } else { m_chart.repaint(); }*/ } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.graph, menu); homecoming true; } class retrievebtccharttask extends asynctask<string, void, xycoords[]> { @override protected xycoords[] doinbackground(string... urls) { httpclient httpclient = new defaulthttpclient(); httpget httpget = new httpget(urls[0]); httpget.setheader("content-type", "application/json"); //httppost.setheader("qty", "1"); inputstream inputstream = null; string result = null; seek { httpresponse response = httpclient.execute(httpget); httpentity entity = response.getentity(); inputstream = entity.getcontent(); bufferedreader reader = new bufferedreader(new inputstreamreader(inputstream, "utf-8"), 8); stringbuilder sb = new stringbuilder(); string line = null; while ((line= reader.readline()) != null) { sb.append(line + "\n"); } result = sb.tostring(); } grab (exception e) {} { seek { if(inputstream != null) { inputstream.close(); } } catch(exception e) {} } xycoords[] coords = new xycoords[5000];; seek { jsonobject btcpricesjson = new jsonobject(result); jsonarray prices = btcpricesjson.getjsonarray("values"); if(prices != null) { int length = prices.length(); for(int = 0; < length; ++i) { jsonobject point = prices.getjsonobject(i); coords[i].x = point.getdouble("x"); coords[i].y = point.getdouble("y"); } } } catch(jsonexception e) {} homecoming coords; } @override protected void onpostexecute(xycoords[] coords) { linearlayout layout = (linearlayout) findviewbyid(r.id.chart); if(m_chart == null) { initchart(); addbtcpricedata(coords); m_chart = chartfactory.getcubelinechartview(graphactivity.this, m_dataset, m_renderer, 0.3f); layout.addview(m_chart); } else { m_chart.repaint(); } } } class xycoords { public double x; public double y; }
}
06-21 23:52:18.288: e/androidruntime(26917): fatal exception: asynctask #2 06-21 23:52:18.288: e/androidruntime(26917): java.lang.runtimeexception: error occured while executing doinbackground() 06-21 23:52:18.288: e/androidruntime(26917): @ android.os.asynctask$3.done(asynctask.java:299) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:352) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.futuretask.setexception(futuretask.java:219) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.futuretask.run(futuretask.java:239) 06-21 23:52:18.288: e/androidruntime(26917): @ android.os.asynctask$serialexecutor$1.run(asynctask.java:230) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1080) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:573) 06-21 23:52:18.288: e/androidruntime(26917): @ java.lang.thread.run(thread.java:841) 06-21 23:52:18.288: e/androidruntime(26917): caused by: java.lang.nullpointerexception 06-21 23:52:18.288: e/androidruntime(26917): @ info.lombardo.crypttrack.graphactivity$retrievebtccharttask.doinbackground(graphactivity.java:149) 06-21 23:52:18.288: e/androidruntime(26917): @ info.lombardo.crypttrack.graphactivity$retrievebtccharttask.doinbackground(graphactivity.java:1) 06-21 23:52:18.288: e/androidruntime(26917): @ android.os.asynctask$2.call(asynctask.java:287) 06-21 23:52:18.288: e/androidruntime(26917): @ java.util.concurrent.futuretask.run(futuretask.java:234) 06-21 23:52:18.288: e/androidruntime(26917): ... 4 more
you can see in logcat runtimeexception
that's crashing asynctask caused nullpointerexception
on line 149 in graphactivity.java. can't tell line pasted code, should plenty help find problem.
android json android-asynctask achartengine
No comments:
Post a Comment