2012-02-06 77 views
1

我面临着一个严峻的问题。演示运行良好,但在我自己的应用程序中,如果我切换到另一个应用程序,然后切换回来,左下方会出现一个小的重复图表。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级别13) AChartEngine版本0.7.0 华硕EEE垫

+0

嗨,我面临同样的问题,现在,你能告诉我你是怎么解决它?谢谢! – Lucia 2012-03-12 13:35:29

回答

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(); 
    } 
    } 

在这里,你从你的列表中添加唯一的新点。我在这里叫点值对象:

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

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

您可以使用自己的对象,或只是二维数组。

希望它能帮助, 托尼

+0

谢谢你的回复。可能我没有清楚地描述问题。我的应用程序可以更新图形,问题是如果我切换到另一个应用程序,然后切换回来,左侧将会有一个较小的图形副本。 – Wenshan 2012-02-08 01:26:43

+0

当我切换到其他应用程序时,应用程序不断更新。当我切换回来后,一次更新后,小图像将消失。 – Wenshan 2012-02-08 02:22:55