我无法解决此MPAndroidChart null对象引用错误

时间:2017-07-14 09:16:12

标签: android database nullpointerexception pie-chart mpandroidchart

我正在尝试使用MPAndroidChart从数据库中存储的数据创建饼图。 数据库的大小不固定,因此可能有2到7个数据。

这就是我从数据库中获取数据的方式。

 myDb = new DatabaseHelper(this);
    Cursor pie = myDb.showKharcha();

    String[] xData = new String[pie.getCount()];
    float[] yData = new float[pie.getCount()];

    int i = 0;
    float total = 0;
    while (pie.moveToNext()){
        String kname = pie.getString(1);
        Float kh= pie.getFloat(2);
        float kharcha = kh.floatValue();
        total = total + kharcha ;

        xData[i]=kname;
        yData[i]=kharcha;
        i++;


    }

这是使用饼图数据的一部分。

    ArrayList<PieEntry> yEntry= new ArrayList<>();
    ArrayList<String> xEntry = new ArrayList<>();

    for( i =0;i < yData.length;i++){
        yData[i] = yData[i]*100/total;
        yEntry.add(new PieEntry(yData[i],i));
    }

    for(i =0;i < xData.length;i++){

        xEntry.add(xData[i]);
    }

我得到的错误是空指针异常错误,这是准确的

Attempt to invoke virtual method 'void com.github.mikephil.charting.charts.PieChart.setRotationEnabled(boolean)' on a null object reference

包含setRotationEnabled(boolean)的部分如下所示,它是在调用addDataSet方法之前进行的,其中我提供了所有内容。

 protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.piechart);
Log.d(TAG, "onCreate: starting to create chart");

pieChart.setRotationEnabled(true);
pieChart.setHoleRadius(25f);
pieChart.setTransparentCircleAlpha(0);
pieChart.setCenterText("Kharcha");
pieChart.setCenterTextSize(10);


addDataSet();}

我想我无法传递要在饼图中使用的浮点数据。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您忘记从布局中获取PieChart

pieChart = (PieChart) findViewById(R.id.chart1);