Android onDraw() не вызывается по таймеру

Это в GraphView.java, который расширяет View. Я хочу, чтобы при вызове этого invalidate(bounds) он одновременно вызывал onDraw(). Что за ошибка в этом коде. Это дает мне это исключение.

 01-01 00:45:42.813: E/AndroidRuntime(1586): FATAL EXCEPTION: Timer-2
 01-01 00: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 00:45:42.813: E/AndroidRuntime(1586):     at        com.cdl.mircam.GraphView$1.run(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);   
    } 

Любая помощь? пожалуйста!!!


person Tejas    schedule 03.08.2013    source источник
comment
что находится в GraphView.java в строке 327?   -  person Boris Mocialov    schedule 03.08.2013
comment
@ Mocialov GraphView.java — это файл, в котором я написал этот код. Этот класс расширяет View   -  person Tejas    schedule 03.08.2013
comment
отличный! что находится в строке 327?   -  person Boris Mocialov    schedule 03.08.2013
comment
аннулировать (границы); этот звонок   -  person Tejas    schedule 03.08.2013


Ответы (2)


пытаться:

if(bounds != null)
   postInvalidate (leftOfYourBoundsObject, topOfYourBoundsObject, rightOfYourBoundsObject, bottomOfYourBoundsObject);

Сообщение недействительно:

Вызывает аннулирование указанной области в последующем цикле цикла событий.

vs

Недействительный:

Если вид виден, onDraw(android.graphics.Canvas) будет вызываться в какой-то момент в будущем.

Источник

person Boris Mocialov    schedule 03.08.2013
comment
Насколько я знаю о postInvalidate(). Неизвестно, когда он снова вызовет onDraw(). - person Tejas; 03.08.2013
comment
@user1844130 user1844130 можешь проверить :) - person Boris Mocialov; 03.08.2013
comment
@user1844130 user1844130 в противном случае используйте yourContextReference.runOnUIThread(new Runnable(...)); - person Boris Mocialov; 03.08.2013

Попробуйте сделать: view.invalidate();, как он вызывает onDraw(Canvas canvas).

person Abhishek Shukla    schedule 03.08.2013
comment
@ Abhishek, что это за объект GraphView? - person Tejas; 03.08.2013
comment
Передайте контекст вашей деятельности в этом представлении - person Abhishek Shukla; 03.08.2013
comment
Почему вы передаете null здесь? - person Abhishek Shukla; 03.08.2013
comment
public GraphView (Context context, AttributeSet attrs) {} это мой класс GraphView, что мне делать? - person Tejas; 03.08.2013
comment
используйте это: общедоступный GraphView (контекстный контекст) - person Abhishek Shukla; 03.08.2013