2014-11-18 7 views
0

이 문제에 대해 2 일간 검색했습니다. 나는 이것이 바보 같은 실수에 의한 것이라고 알고 있지만, 나는 그것을 발견 할 수 없다. 누군가 도움이된다면 좋을 것입니다. 스 니펫입니다.java.lang.IllegalArgumentException : android.view.Surface.unlockCanvasAndPost (기본 메서드)

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) 
+0

두 번째 줄에는 getSurfaceHolder()가 무엇입니까? – Sonali8890

+0

당신이 배경 화면을 그릴 표면을 제공하는 inbuilt 메서드입니다. – Wizard

답변

5

문제를 파악했습니다. 누군가가 똑같은 문제를 겪고 있다면 여기에주의를 기울여야합니다. 정말 바보 같은 실수였습니다. 코드에서 변경해야 할 사항은 없습니다. 매니페스트 파일을 업데이트하십시오.

<activity 
     android:name="com.example.livewallpaper.Prefs" 
     android:exported="true" > 
     <intent-filter> 
      <category android:name="android.intent.category.PREFERENCE" /> 
     </intent-filter> 
</activity> 

android:exported="true"을 잊지 마세요. 나는 그것을 실제로 놓쳤다!

+2

대단히 감사합니다! 정신 병원에서 나를 구해 줬어. –

+0

즐거움은 모두 내 것입니다. – Wizard

+0

@ PM25793 Pls 도움. 내 매니페스트에 이미이 줄이 있습니다. android : exported = "true". 그러나 여전히 나는이 예외를 얻고있다. 어떻게해야합니까? –