1

動的チャートを描画するアプリケーションがあり、それが完了するとデータが保存され、ユーザーが終了できるようになります。(したがって、複数のアクティビティがあります)。ユーザーが終了したら、戻ってきて、グラフを 0 から動的に再描画できるようにしたいのですが、何らかの理由で、グラフは常に左の値から続行されます。

これが私が試したことです:

  1. clear() を呼び出して XYSeries をクリアします。また、シリーズを XYMultipleSeriesDataset から削除し、XYMultipleSeriesRenderer のテキスト ラベルをクリアしました。それでも、グラフは中断したところから続きます。

  2. onDestroy() を呼び出して、保存されたすべてのデータを削除します。これはチャートをクリアするために機能しましたが、ユーザーが終了を選択すると、何らかの奇妙な理由で、私が殺していたアクティビティがそれ自体を再作成しようとしたため、アプリがクラッシュしました。onDestroy() を finish() と一緒に試したところ、クラッシュはありませんでしたが、グラフは前回の実行からのデータを保存しました。

  3. savedInstanceState を回避するために super.onCreate(null) を呼び出します。グラフはまだデータを保存しています。

誰でも私を助けてもらえますか?コードやその他のものを投稿する必要がある場合はお知らせください。

前もって感謝します!

4

2 に答える 2

5

ビューを削除してから再度ビューを追加することで、この問題を解決しました。

新しい XYSeries と新しいデータセットを作成するたびに:

mDataset = new XYMultipleSeriesDataset();  //mDataset in my case is global
XYSeries series = new XYSeries("My Series Title");

series.add((double)y,Weight); //call this function several times if you want several points in the same series.

mDataset.addSeries(series);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);  //mChartView is also global

layout.removeAllViews();  //This remove previous graph
layout.addView(mChartView); //This loads the graph again

これが最善の方法かどうかはわかりませんが、うまく機能し、遅延もほとんどありません (グラフを更新する必要があるのは、他のアクティビティから戻ったとき、またはユーザーがデータを入力したときだけです)。

これが役に立つことを願っています。BR、エイドリアン。

于 2012-11-28T06:43:22.790 に答える