1

私は厄介な問題に直面しています。デモは正常に実行されますが、自分のアプリでは、別のアプリに切り替えてから元に戻すと、左下に小さな重複したグラフが表示されます。

私のアプリのチャートは定期的に更新されます(新しい(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();

}

なぜこれが起こったのか理解できませんが、誰かが同じ問題を抱えていますか?

通常のチャート: 通常のチャート

別のアプリから切り替えた後: ここに画像の説明を入力してください

Android 3.2(APIレベル13)AChartEngineバージョン0.7.0AsusEEEパッド

4

1 に答える 1

0

新しいデータを追加するだけの場合は、データセットに新しいデータを入力してグラフを再描画する必要があります。グラフ onCreate を作成し、新しいデータを追加するときに更新するだけです。

見てください: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 配列のみを使用できます。

それが役立つことを願っています、トニ

于 2012-02-07T08:16:15.573 に答える