【发布时间】:2014-11-18 06:07:26
【问题描述】:
我已经搜索了两天这个问题。我知道这是由一些愚蠢的错误引起的,但我找不到那个东西。如果有人帮助我,那就太好了。这里是sn-p
private void draw() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = holder.lockCanvas();;
try {
update(c);
updateText(c); //These are the effects like snowing or bouncing
} finally {
if (c != null)
holder.unlockCanvasAndPost(c); //This is line no. 151
}
mHandler.removeCallbacks(drawRunner);
if (mVisible) {
mHandler.postDelayed(drawRunner, 10);
}
}
我认为问题出在上述方法上。这是logcat:
11-18 11:29:15.145: E/AndroidRuntime(2845): java.lang.IllegalArgumentException
11-18 11:29:15.145: E/AndroidRuntime(2845): at android.view.Surface.unlockCanvasAndPost(Native Method)
11-18 11:29:15.145: E/AndroidRuntime(2845): at com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost(BaseSurfaceHolder.java:215)
11-18 11:29:15.145: E/AndroidRuntime(2845): at com.example.livewallpaper.SnowEffect$MyBounce.draw(SnowEffect.java:151)
11-18 11:29:15.145: E/AndroidRuntime(2845): at com.example.livewallpaper.SnowEffect$MyBounce.access$0(SnowEffect.java:141)
11-18 11:29:15.145: E/AndroidRuntime(2845): at com.example.livewallpaper.SnowEffect$MyBounce$1.run(SnowEffect.java:55)
【问题讨论】:
-
第二行的 getSurfaceHolder() 是什么?
-
它是一种内置方法,可为您提供要在其上绘制壁纸的表面。
标签: java android illegalargumentexception surfaceholder