2013-04-05 18 views
2

開發一個小的Android遊戲(2.1至4.2支持),下面的代碼經常引發在的Android帆布drawcolor拋出空指針異常

canvas.drawColor((0xFFAAAAAA顯示java.lang.NullPointerException除外);

public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback { 

public void render(Canvas canvas) {    

     canvas.drawColor(0xFFAAAAAA); 

     droid.draw(canvas); 

    } 
} 

這裏是堆棧跟蹤

java.lang.NullPointerException 
at com.rdx.play.MainGamePanel.render(MainGamePanel.java:186) 
at com.rdx.play.MainThread.run(MainThread.java:54) 

異常不一致,可能是什麼原因導致了這個問題?

非常感謝。

+0

郵政logcat的。 – eightx2 2013-04-05 10:46:12

+0

'drawColor(('是筆誤吧?另外,既然你知道'canvas'是'null'有時,爲什麼不調試代碼,看看它調用'render'發送'null'作爲參數。 – SudoRahul 2013-04-05 10:47:26

+0

糾正錯字,飛機墜毀在4.0可見,但從來沒有在2.3和2.2。 – RDX 2013-04-05 10:49:58

回答

2

SurfaceHolder.lockCanvas()被允許返回null(COS你的線程不具有完全相同的生存期爲表面)。我敢打賭你沒有在你的線程函數中處理這種可能性。