Par*_* P. 0 java android illegalargumentexception surfaceholder
我已经搜索了这个问题两天了.我知道这是由一些愚蠢的错误引起的,但我无法找到那个东西.如果有人帮助我,那会很棒.这是片段
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)
找出问题所在.
如果有人遇到同样的问题,这就是解决方案,这是一个非常愚蠢的错误.更新清单文件.
<activity
      android:name="com.yourpackage.Prefs"
      android:exported="true" >
      <intent-filter>
           <category android:name="android.intent.category.PREFERENCE" />
      </intent-filter>
</activity>
别忘了添加android:exported="true".我实际上错过了!