我有一个使用以下代码生成的条形图:
val myStackLabels = arrayOfNulls<String>(endMonth)
val values = java.util.ArrayList<BarEntry>()
for (i in activityList.indices){
myStackLabels[i] = HelperFunctions.getMonthName(activityList.get(i).actionMonth,2)
values.add(
BarEntry(
i.toFloat(), activityList.get(i).totalBehaviorPoints.toFloat()
)
)
}
val dataSet = BarDataSet(values, "")
val colors = java.util.ArrayList<Int>()
colors.add(Color.parseColor("#C5C4C4"))
dataSet.colors = colors
dataSet.setDrawIcons(true)
dataSet.highLightColor = Color.parseColor("#3f51b5")
val xAxis: XAxis = myChart!!.getXAxis()
xAxis.setDrawGridLines(false)
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM)
xAxis.setValueFormatter(IndexAxisValueFormatter(myStackLabels))
xAxis.setGranularity(1f)
xAxis.setGranularityEnabled(true)
xAxis.setDrawAxisLine(false)
xAxis.textColor = Color.BLACK
xAxis.labelCount = endMonth
xAxis.setDrawLabels(true)
val leftAxis: YAxis = myChart!!.getAxisLeft()
leftAxis.setDrawGridLines(true)
leftAxis.setLabelCount(endMonth, true)
leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART)
leftAxis.spaceTop = 15f
leftAxis.axisMinimum = 0f // this replaces setStartAtZero(true)
leftAxis.setDrawAxisLine(true)
val rightAxis: YAxis = myChart!!.getAxisRight()
rightAxis.setDrawGridLines(false)
rightAxis.setLabelCount(endMonth, false)
rightAxis.spaceTop = 15f
rightAxis.axisMinimum = 0f // this replaces setStartAtZero(true)
rightAxis.setDrawAxisLine(false)
rightAxis.isEnabled = false
val dataSets = java.util.ArrayList<IBarDataSet>()
dataSets.add(dataSet)
val data = BarData(dataSets)
data.setValueFormatter(StackedValueFormatter(false, " points", 0));
data.setValueTextColor(Color.BLACK);
data.setDrawValues(true)
val myHighlight = Highlight(1f, 0,0);
myChart.highlightValue(myHighlight)
myChart.animateY(1500)
myChart.setDrawValueAboveBar(true)
myChart.setScaleEnabled(false)
myChart.setPinchZoom(false)
myChart.setData(data);
myChart.setFitBars(true); // make the x-axis fit exactly all bars
myChart.invalidate(); // refresh
基本上,以上代码将生成一个非常基本的条形图。我想自动突出显示一个小节线,例如第二个小节,因此上面的代码为myHighlight = Highlight(1f, 0,0)
。
但是运行程序将始终返回java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.mikephil.charting.data.Entry com.github.mikephil.charting.data.ChartData.getEntryForHighlight(com.github.mikephil.charting.highlight.Highlight)' on a null object reference
at com.github.mikephil.charting.charts.Chart.highlightValue(Chart.java:631)
,它指向行myChart.highlightValue(myHighlight)