发现AChartEngine CombinedXYChart错误的第4个参数

时间:2016-01-29 10:26:57

标签: android android-studio achartengine

我的组合图表有点问题。 3年前我用Eclipse做了同样的事情并使用了jar库。我使用依赖项将我的代码复制到android Studio,现在它无法正常工作。我无法让它发挥作用。

我将发布我的整个代码然后我会标记问题。

public void createChart()
{
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
    final Bundle extras = this.getIntent().getExtras();
    couchdurations = extras.getLongArray("couchtimes");
    perstdurations = extras.getLongArray("persttimes");
    //ToDo Sqlite noch ergänzen
    XYSeries couchseries = new XYSeries("CouchBase");
    XYSeriesRenderer couchRenderer = new XYSeriesRenderer();
    XYSeries perstseries = new XYSeries("PerstDB");
    XYSeriesRenderer perstRenderer = new XYSeriesRenderer();

    couchRenderer.setColor(Color.RED);
    couchRenderer.setPointStyle(PointStyle.X);
    couchRenderer.setFillPoints(false);
    couchRenderer.setLineWidth(2);
    couchRenderer.setDisplayChartValues(false);

    perstRenderer.setColor(Color.BLUE);
    perstRenderer.setPointStyle(PointStyle.X);
    perstRenderer.setFillPoints(false);
    perstRenderer.setLineWidth(2);
    perstRenderer.setDisplayChartValues(false);

    multiRenderer.addSeriesRenderer(couchRenderer);
    multiRenderer.addSeriesRenderer(perstRenderer);
    multiRenderer.setYAxisMin(0.0);
    multiRenderer.setYAxisMax(10000000.0);
    multiRenderer.setXAxisMax(60000.0);
    multiRenderer.setLabelsTextSize(40);
    multiRenderer.setLegendTextSize(40);

    for(int i = 0; i < couchdurations.length; i++)
    {
        couchseries.add(couchdurations[i], datasizes[i]);
        perstseries.add(perstdurations[i], datasizes[i]);
    }
    dataset.addSeries(couchseries);
    dataset.addSeries(perstseries);

    // Getting a reference to LinearLayout of the MainActivity Layout
    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);

    // Specifying chart types to be drawn in the graph
    // Number of data series and number of types should be same
    // Order of data series and chart type will be same
    String[] types = new String[dataset.getSeriesCount()];
    for(int i = 0; i < (dataset.getSeriesCount()); i++)
    {
        types[i] = LineChart.TYPE;
    }
    // Creating a combined chart with the chart types specified in types array


mChart = (GraphicalView) ChartFactory.getCombinedXYChartView(getBaseContext(), dataset, multiRenderer, types);
    // Adding the Combined Chart to the LinearLayout

    chartContainer.addView(mChart);
}

问题在于以下几行:

mChart = (GraphicalView) ChartFactory.getCombinedXYChartView(getBaseContext(), dataset, multiRenderer, types);

我总是得到第4个参数错误的错误。但我在另一个Android应用程序中使用了3年之前相同的代码。 Error Screenshot 1 Error Screenshot 2 您可以在附加的图片中看到错误消息。 错误的第4个参数类型。找到'java.lang.String []',必填:'org.achartengine.chart.CombinedXYChart.XYCombinedChartDef []'

有人可以帮我解决这个问题吗?我不知道如何解决它。

2 个答案:

答案 0 :(得分:1)

有了这个链接 github.com/hdodenhof/achartengine 也结合了时间序列成功。然后以下代码适用于 CombinedTimeChart ...:

    CombinedTimeChart.XYCombinedChartDef[] types =
            new CombinedXYChart.XYCombinedChartDef[] {
                    new CombinedXYChart.XYCombinedChartDef(CubicLineChart.TYPE, 0),
                    new CombinedXYChart.XYCombinedChartDef(LineChart.TYPE, 1),
                    new CombinedXYChart.XYCombinedChartDef(LineChart.TYPE, 2),
                    new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 3)
    };

    mChart = getCombinedTimeChartView(this, dataset, multiRenderer, types);

答案 1 :(得分:0)

我明白了。改变

String[] types = new String[dataset.getSeriesCount()];
    for(int i = 0; i < (dataset.getSeriesCount()); i++)
    {
        types[i] = LineChart.TYPE;
    }

CombinedXYChart.XYCombinedChartDef[] types = new CombinedXYChart.XYCombinedChartDef[]
            {

                    new CombinedXYChart.XYCombinedChartDef(LineChart.TYPE, 0), new CombinedXYChart.XYCombinedChartDef(LineChart.TYPE, 1)
            };