1

我有一个绘制动态图表的应用程序,完成后它会保存一些数据并让用户退出。(所以有多个活动)。一旦用户退出,我希望他们能够回来并让图表从 0 动态地重新绘制自己。但由于某种原因,图表总是从它离开的值继续。

这是我尝试过的:

  1. 通过调用 clear() 清除 XYSeries。此外,从我的 XYMultipleSeriesDataset 中删除了该系列,并清除了我的 XYMultipleSeriesRenderer 上的文本标签。尽管如此,该图表仍会从中断处继续。

  2. 调用 onDestroy() 来清除所有保存的数据。这可以清除图表,但是当用户选择退出时,应用程序崩溃了,因为出于某种奇怪的原因,我正在杀死的活动试图重新创建自己。当我尝试 onDestroy() 和 finish() 时,没有崩溃,但图表保存了上次运行的数据。

  3. 调用 super.onCreate(null) 来避免 savedInstanceState。该图仍然保存了它的数据。

任何人都可以帮助我吗?如果我需要发布我的代码或其他任何内容,请告诉我!

先感谢您!

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 回答
0

每次启动新图表时,您都可以使用一种方法

private void removeGraph(){
    //View item = lineChartLayout;
    lineChartLayout.removeAllViews();
    //((ViewGroup) item.getParent()).removeView(item);
}

既然lineChartLayout是 a Layout,那么它就是 a ViewGroup,因此我们可以通过调用removeAllViews布局上的方法来删除它上面的所有附加视图,并且所有附加在它上面的视图都将被删除。干杯

于 2020-07-12T22:06:17.240 回答