Android 使用aChartengine的折线图

Android 使用aChartengine的折线图,android,Android,我想在我的应用程序中使用折线图,我想在下面的图像中显示它,该图像设置为线性布局1的背景图像,在第二个线性布局中,我想添加折线图,我正在使用achart引擎库。第66行出现空指针异常(layout.addView(mChartView,new LayoutParams(LayoutParams.FILL\u PARENT,LayoutParams.FILL\u PARENT))),请提供帮助 package com.android.linegraph; import java.u

我想在我的应用程序中使用折线图,我想在下面的图像中显示它,该图像设置为线性布局1的背景图像,在第二个线性布局中,我想添加折线图,我正在使用achart引擎库。第66行出现空指针异常(layout.addView(mChartView,new LayoutParams(LayoutParams.FILL\u PARENT,LayoutParams.FILL\u PARENT))),请提供帮助

    package com.android.linegraph;

    import java.util.ArrayList;
    import java.util.List;

    import org.achartengine.ChartFactory;
    import org.achartengine.GraphicalView;
    import org.achartengine.chart.PointStyle;
    import org.achartengine.model.XYMultipleSeriesDataset;
    import org.achartengine.model.XYSeries;
    import org.achartengine.renderer.XYMultipleSeriesRenderer;
    import org.achartengine.renderer.XYSeriesRenderer;

    import android.app.Activity;
    import android.graphics.Color;
    import android.graphics.Paint.Align;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.LinearLayout;

    public class LineGraph extends Activity {
        private GraphicalView mChartView;

        XYMultipleSeriesRenderer renderer;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);

            LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout2);

            String[] titles = new String[] { "spens1" };
            List<double[]> x = new ArrayList<double[]>();
            x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            // }
            List<double[]> values = new ArrayList<double[]>();
            values
                    .add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13,
                            10 });
            int[] colors = new int[] { Color.BLUE };
            PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE };

            renderer = buildRenderer(colors, styles);
            int length = renderer.getSeriesRendererCount();
            for (int i = 0; i < length; i++) {
                ((XYSeriesRenderer) renderer.getSeriesRendererAt(i))
                        .setFillPoints(true);
            }
            setChartSettings(renderer, "SCORE CARD VIEW", "Attetempts",
                    "Marks Scored", 0.5, 12.5, -10, 40, Color.LTGRAY, Color.LTGRAY);
            renderer.setXLabels(12);
            renderer.setYLabels(10);
            renderer.setShowGrid(true);
            renderer.setXLabelsAlign(Align.RIGHT);
            renderer.setYLabelsAlign(Align.RIGHT);
            renderer.setZoomButtonsVisible(true);
            renderer.setPanLimits(new double[] { -10, 20, -10, 40 });
            renderer.setZoomLimits(new double[] { -10, 20, -10, 40 });

            if (mChartView == null) {
                Log.d("Oncreate ", "if (mChartView == null)");
                mChartView = ChartFactory.getLineChartView(this, mDataset(titles,
                        x, values), renderer);
                layout.addView(mChartView, new LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

            } else {
    //          mChartView.repaint();
                Log.d("Oncreate ", "if (mChartView != null)");
            }
        }

        private void setChartSettings(XYMultipleSeriesRenderer renderer3,
                String title, String xTitle, String yTitle, double xMin,
                double xMax, double yMin, double yMax, int axesColor,
                int labelsColor) {
            // TODO Auto-generated method stub

            renderer3.setChartTitle(title);
            renderer3.setXTitle(xTitle);
            renderer3.setYTitle(yTitle);
            renderer3.setXAxisMin(xMin);
            renderer3.setXAxisMax(xMax);
            renderer3.setYAxisMin(yMin);
            renderer3.setYAxisMax(yMax);
            renderer3.setAxesColor(axesColor);
            renderer3.setLabelsColor(labelsColor);

        }

        private XYMultipleSeriesRenderer buildRenderer(int[] colors,
                PointStyle[] styles) {
            // TODO Auto-generated method stub
            XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
            setRenderer(renderer, colors, styles);
            return renderer;
        }

        private void setRenderer(XYMultipleSeriesRenderer renderer2, int[] colors,
                PointStyle[] styles) {
            // TODO Auto-generated method stub
            renderer2.setAxisTitleTextSize(16);
            renderer2.setChartTitleTextSize(20);
            renderer2.setLabelsTextSize(15);
            renderer2.setLegendTextSize(15);
            renderer2.setPointSize(5f);
            renderer2.setMargins(new int[] { 20, 30, 15, 20 });
            int length = colors.length;
            for (int i = 0; i < length; i++) {
                XYSeriesRenderer r = new XYSeriesRenderer();
                r.setColor(colors[i]);
                r.setPointStyle(styles[i]);
                renderer2.addSeriesRenderer(r);
            }
        }

        private XYMultipleSeriesDataset mDataset(String[] titles,
                List<double[]> xValues, List<double[]> yValues) {
            // TODO Auto-generated method stub
            XYMultipleSeriesDataset dataset1 = new XYMultipleSeriesDataset();
            addXYSeries(dataset1, titles, xValues, yValues, 0);
            return dataset1;
        }

        private void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
                List<double[]> xValues, List<double[]> yValues, int scale) {
            // TODO Auto-generated method stub

            int length = titles.length;
            for (int i = 0; i < length; i++) {
                XYSeries series = new XYSeries(titles[i], scale);
                double[] xV = xValues.get(i);
                double[] yV = yValues.get(i);
                int seriesLength = xV.length;
                for (int k = 0; k < seriesLength; k++) {
                    series.add(xV[k], yV[k]);
                }
                dataset.addSeries(series);
            }

        }

    }

<RelativeLayout android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:id="@+id/linearLayout1"
        android:background="@drawable/cricket" android:layout_alignParentLeft="true"
        android:layout_height="wrap_content" android:layout_width="wrap_content"></LinearLayout>

    <LinearLayout android:id="@+id/linearLayout2"
        android:layout_below="@id/linearLayout1"
        android:layout_alignParentLeft="true" android:layout_height="wrap_content"
        android:layout_width="wrap_content"></LinearLayout>
</RelativeLayout>
package com.android.linegraph;
导入java.util.ArrayList;
导入java.util.List;
导入org.achartengine.ChartFactory;
导入org.achartengine.GraphicalView;
导入org.achartengine.chart.PointStyle;
导入org.achartengine.model.xymultiplesseriesdataset;
导入org.achartengine.model.XYSeries;
导入org.achartengine.renderer.XYMultipleSeriesRenderer;
导入org.achartengine.renderer.XYSeriesRenderer;
导入android.app.Activity;
导入android.graphics.Color;
导入android.graphics.Paint.Align;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.ViewGroup.LayoutParams;
导入android.widget.LinearLayout;
公共类LineGraph扩展活动{
private GraphicalView mChartView;
XY多重渲染器渲染器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
LinearLayout布局=(LinearLayout)findViewById(R.id.linearLayout2);
字符串[]标题=新字符串[]{“spens1”};
列表x=新的ArrayList();
x、 添加(新的双[{1,2,3,4,5,6,7,8,9,10,11,12});
// }
列表值=新的ArrayList();
价值观
.add(新的双[…]9、10、11、15、19、23、26、25、22、18、13、,
10 });
int[]colors=newint[]{Color.BLUE};
PointStyle[]styles=新的PointStyle[]{PointStyle.CIRCLE};
渲染器=构建渲染器(颜色、样式);
int length=renderer.getSeriesRenderCount();
for(int i=0;i setContentView(R.layout.NAME_OF_YOUR_XML_FILE);
 super.onCreate(savedInstanceState);