Android:Graphview在onResume中更新,但通过invalidate()方法失败
我正在开发一个应用程序,其中一个自定义视图由一些后端逻辑更新。自定义视图是在Android:Graphview在onResume中更新,但通过invalidate()方法失败,android,graph,android-view,invalidation,Android,Graph,Android View,Invalidation,我正在开发一个应用程序,其中一个自定义视图由一些后端逻辑更新。自定义视图是在onResume()方法中精细更新的,但不能通过view.invalidate()更新。 我希望点击按钮后视图得到更新 代码片段如下所示: public class ChartDemo extends Activity { private IDemoChart mChart; Button displayGraph, reloadGraph; LinearLayout linearLayout; View view;
onResume()方法中精细更新的,但不能通过view.invalidate()更新代码>。
我希望点击按钮后视图得到更新
代码片段如下所示:
public class ChartDemo extends Activity {
private IDemoChart mChart;
Button displayGraph, reloadGraph;
LinearLayout linearLayout;
View view;
Random randomData, randomBattery;
int data, battery;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mChart = new SalesStackedBarChart();
reloadGraph = (Button) findViewById(R.id.reloadView);
linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
view = new View(ChartDemo.this);
loadGraphWithValues();
reloadGraph.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view.invalidate();
loadGraphWithValues();
// view = mChart.execute(ChartDemo.this);
}
});
linearLayout.addView(view);
}
public void loadGraphWithValues() {
data = generateDataValue();
battery = generateBatteryValue();
ListData list = new ListData();
list.setData(data, battery);
SalesStackedBarChart.values.add(list);
view = mChart.execute(ChartDemo.this);
}
public int generateBatteryValue() {
// TODO Auto-generated method stub
randomData = new Random();
return randomData.nextInt(100) + 1;
}
public int generateDataValue() {
// TODO Auto-generated method stub
randomBattery = new Random();
return randomBattery.nextInt(100) + 1;
}
public class ListData {
double data;
double battery;
// getter and setter methods..
}
}
提前谢谢
view.invalidate();
loadGraphWithValues();
这些可能应该被切换,因为您首先更新视图,然后告诉它重新绘制自己。另外,您的mChart
是什么?是异步的吗
编辑:我想在这里:
view = mChart.execute(ChartDemo.this);
您正在创建一个新视图,但实际上并未将其附着到布局。尝试将返回的视图替换布局中的现有视图。谢谢您的回复。麦克哈特是条形图的一个例子。它的execute()方法返回图形视图(即条形图)。不,值被插入到列表中,但我无法显示。当我重新启动应用程序时,图形被更新。我已经用这种方式添加了它linearLayout.addView(视图)代码>尝试将该行作为最后一条指令放入loadGraphWithValues()中。