bug复现
今天在用mpchartandroid绘图的时候,有个折线图高亮的需求,自己设置高亮时发生npe,与诸君分享,贴个bug,方便遇到问题的小伙伴可以快速索引到。
Unable to start activity ComponentInfo{com.example.viewsamples/com.example.viewsamples.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘int com.github.mikephil.charting.data.ChartData.getDataSetCount()’ on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2958)
at
…
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘int com.github.mikephil.charting.data.ChartData.getDataSetCount()’ on a null object reference
at com.github.mikephil.charting.charts.Chart.highlightValue(Chart.java:600)
at com.github.mikephil.charting.charts.Chart.highlightValue(Chart.java:587)
at com.github.mikephil.charting.charts.Chart.highlightValue(Chart.java:564)
at com.example.viewsamples.MainActivity.hailightWithMarker(MainActivity.kt:140)
at com.example.viewsamples.MainActivity.setData(MainActivity.kt:127)
at com.example.viewsamples.MainActivity.onCreate(MainActivity.kt:47)
bug处代码
fun setData(entries: List<Entry>) {
binding.lineChart.apply {
val dataSet = LineDataSet(entries, "SS").apply {
highlightLineWidth = 1.6f
lineWidth = 2f
highlightValue(entry[4].x,0)//bug
}
data = LineData(dataSet)
highlightValue(entry[4].x,0)//no bug
marker = MyMarkerView(context)
invalidate()
}
}
这里报了空指针,没有获取到dataSetCount,需要把高亮api方法,放在setData的后面,之后就有默认被点击的高亮效果了。还有的时候高亮写了直接无效果,现在无法复现,猜测可能也是写法的问题。