2012-02-06 2 views
1

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

Диаграмма в моем приложении будет обновляться (добавлять новые (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 Level 13) AChartEngine версия 0.7.0 Asus Eee Pad

+0

Привет, я столкнулся с той же проблемой прямо сейчас, Вы можете сказать мне, как вы ее решили ?? Спасибо! – Lucia

ответ

0

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

посмотреть на: creating timechar.

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

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

+0

Благодарим вас за ответ. Вероятно, я не описал проблему четко. Мое приложение может обновить график, проблема в том, что если я переключусь на другое приложение, а затем вернусь, будет меньшая копия графика слева. – Wenshan

+0

Приложение обновляется при переключении на другие приложения. И когда я переключаюсь обратно, после одного обновления небольшое изображение исчезнет. – Wenshan