achartengine: дублированный график после резюме - PullRequest
1 голос
/ 06 февраля 2012

Я сталкиваюсь с проблемой Werid.Демонстрации работают хорошо, но в моем собственном приложении, если я переключился на другое приложение, а затем переключился обратно, в левом нижнем углу была бы небольшая дублированная диаграмма.

Диаграмма в моем приложении будет обновлена ​​(добавляйте new (x, y) и перерисовывайте) с интервалами.

Приложены исходное изображение и изображение после переключения назад.

Я подозреваю, что есть некоторые проблемы с моим методом onResume ().

@Override
protected void onResume() {
    super.onResume();

    if (mChartView == null) {
        LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout_chart);
        mChartView = ChartFactory.getLineChartView(this, mDataSet, mRenderer);
        mRenderer.setClickEnabled(true);
        mRenderer.setSelectableBuffer(100);


        mChartView.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

            }
        });
        mChartView.setOnLongClickListener(new OnLongClickListener() {
             public boolean onLongClick(View v) {
                 return false;
             }
         });
         mChartView.addZoomListener(new ZoomListener() {

             public void zoomApplied(ZoomEvent e) {
             }
             public void zoomReset() {
             }
         }, true, true);

         mChartView.addPanListener(new PanListener() {
             public void panApplied() {}
         });

         layout.addView(mChartView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    }

    mChartView.repaint();

}

Я не могу понять, почему это произошло, у кого-то есть такая же проблема?

Нормальный график: normal chart

После переключения из другого приложения:enter image description here

Android 3.2 (уровень API 13) AChartEngine версия 0.7.0 Asus EEE pad

1 Ответ

0 голосов
/ 07 февраля 2012

Если вы просто добавляете новые данные, вам нужно просто заполнить набор данных новыми данными и перекрасить график. Вы создаете график onCreate и просто обновляете его при добавлении новых данных.

посмотрите на: время создания .

Код для обновления - например, в ссылке должно быть:

private void updateData(List<Point> data) {
        int size= data.size();
        int lastsize = time_series.getItemCount();
        if (lastsize < size) {
        //add new data
        for (int i = lastsize ; i < size; i++) {
            try {
                Point p = pointslist.get(i);
                series.add(p.x,p.y);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        mChartView.repaint();
    }
    }

Здесь вы добавляете только новые точки из вашего списка. У меня был объект значения здесь под названием Point:

public class Point {
       public Date x;
       public double y;

       public Point() {
         super();
       };
}

Вы можете использовать свой собственный объект или просто 2D-массив.

Надеюсь, это поможет, Toni

...