首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android onDraw()不会在计时器上被调用

Android onDraw()不会在计时器上被调用
EN

Stack Overflow用户
提问于 2013-08-03 14:22:53
回答 2查看 637关注 0票数 1

这是在扩展视图的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)

代码语言:javascript
复制
@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);   
    } 

有什么帮助吗?拜托!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-03 14:44:11

尝试:

代码语言:javascript
复制
if(bounds != null)
   postInvalidate (leftOfYourBoundsObject, topOfYourBoundsObject, rightOfYourBoundsObject, bottomOfYourBoundsObject);

PostInvalidate: 通过事件循环使指定区域的无效在随后的循环中发生。

vs

无效: 如果视图是可见的,onDraw(android.graphics.Canvas)将在将来的某个时候被调用。

来源

票数 1
EN

Stack Overflow用户

发布于 2013-08-03 14:27:57

尝试做:view.invalidate();,正如它所称的onDraw(Canvas canvas)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18033806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档