这是在扩展视图的GraphView.java中实现的。我希望当这个无效(界)被调用时,同时它应该调用onDraw()。代码中的错误是什么。它给了我这个例外。
01:01:45:42.813: E/AndroidRuntime(1586):致命例外: Timer-2 01-01 :45:42.813: E/AndroidRuntime(1586):java.lang.NullPointerException 01-01 00:45:42.813: E/AndroidRuntime(1586):at android.view.View.invalidate(View.java:8467) 01-01 :45:42.813: E/AndroidRuntime(1586):at com.cdl.mircam.GraphView$1。运行(GraphView.java:327) 01-01 00:45:42.813: E/AndroidRuntime(1586):at java.util.Timer$TimerImpl.run(Timer.java:284)
@Override
public void onDraw(Canvas c)
{
super.onDraw(c);
drawStuff(c);
}
public void drawStuff(Canvas canvas)
{
try
{
PlotRealTimeGraph(canvas);
bounds = new Rect(chanX_count1+0, 0, chanX_count1+5, graphheight);
canvas.drawRect(bounds,myPaint);
}
catch(Exception e1)
{
e1.printStackTrace();
}
}
public void InvalidatePlotRealTimeGraph()
{
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run()
{
invalidate(bounds);
}
},1000,40);
} 有什么帮助吗?拜托!
发布于 2013-08-03 14:44:11
尝试:
if(bounds != null)
postInvalidate (leftOfYourBoundsObject, topOfYourBoundsObject, rightOfYourBoundsObject, bottomOfYourBoundsObject);PostInvalidate: 通过事件循环使指定区域的无效在随后的循环中发生。
vs
无效: 如果视图是可见的,onDraw(android.graphics.Canvas)将在将来的某个时候被调用。
来源
发布于 2013-08-03 14:27:57
尝试做:view.invalidate();,正如它所称的onDraw(Canvas canvas)。
https://stackoverflow.com/questions/18033806
复制相似问题