android - MPAndroidChart BarChart Crash -


i trying implement barchart mpandroidchart. when call setdata() method barchart, following error:

java.lang.nullpointerexception: attempt invoke virtual method 'int java.lang.string.length()' on null object reference

the crash occuring @ following place: com.github.mikephil.charting.components.yaxis.getlongestlabel(yaxis.java:333)

i literally copied sample code. going on? using graph inside listview

static class dailygoalviewholder  {      public barchart mchart;     }  priate dailygoalviewholder mdailygoalviewholder;  @override private void getview(int position, view convertview, viewgroup parent)  {     layoutinflater inflater = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service);     convertview = inflater.inflate(r.layout.layout_dashboard_daily_goal, parent, false);      mdailygoalviewholder = new dailygoalviewholder();     mdailygoalviewholder.mchart = (barchart) convertview.findviewbyid(r.id.chart);      mdailygoalviewholder.mchart.setdrawbarshadow(false);     mdailygoalviewholder.mchart.setdrawvalueabovebar(true);     mdailygoalviewholder.mchart.setdescription("");     mdailygoalviewholder.mchart.setmaxvisiblevaluecount(60);     mdailygoalviewholder.mchart.setpinchzoom(false);     mdailygoalviewholder.mchart.setdrawgridbackground(false);      xaxis xaxis = mdailygoalviewholder.mchart.getxaxis();     xaxis.setposition(xaxis.xaxisposition.bottom);     xaxis.setdrawgridlines(false);     xaxis.setspacebetweenlabels(2);      valueformatter custom = new chartvalueformatter();      yaxis leftaxis = mdailygoalviewholder.mchart.getaxisleft();     leftaxis.setlabelcount(8);     leftaxis.setvalueformatter(custom);     leftaxis.setposition(yaxis.yaxislabelposition.outside_chart);     leftaxis.setspacetop(15f);      legend l = mdailygoalviewholder.mchart.getlegend();     l.setposition(legend.legendposition.below_chart_left);     l.setform(legend.legendform.square);     l.setformsize(9f);     l.settextsize(11f);     l.setxentryspace(4f);      setdataforchart(12, 50); }  private void setdata(int count, float range) {      arraylist<string> xvals = new arraylist<string>();     (int = 0; < count; i++) {         xvals.add("test");     }      arraylist<barentry> yvals1 = new arraylist<barentry>();      (int = 0; < count; i++) {         float mult = (range + 1);         float val = (float) (math.random() * mult);         yvals1.add(new barentry(val, i));     }      bardataset set1 = new bardataset(yvals1, "dataset");     set1.setbarspacepercent(35f);      arraylist<bardataset> datasets = new arraylist<bardataset>();     datasets.add(set1);      bardata data = new bardata(xvals, datasets);     data.setvaluetextsize(10f);     data.setvaluetypeface(mtf);      mdailygoalviewholder.mchart.setdata(data); } 

in separate file, chartvaluefomatter class follows:

import com.github.mikephil.charting.utils.valueformatter;  import java.text.decimalformat;  public class chartvalueformatter implements valueformatter  {      private decimalformat mformat;      public chartvalueformatter()  {          mformat = new decimalformat("###,###,###,##0.0");     }      @override     public string getformattedvalue(float value)  {          return null;     } } 

gradle --> compile 'com.github.philjay:mpandroidchart:v2.1.0'

the reason crash this:

@override public string getformattedvalue(float value)  {     return null; } 

you cannot return null valueformatter. instead, if don't want display on axis, call setdrawlabels(false) or return "" getformattedvalue(...) method.


Comments