2012-02-06 78 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