2014-01-19 1 views
1

에서 함수를 호출하려고하면 충돌이 발생하므로 매우 이상한 상황이 발생합니다. 내 앱에 광고를 설정하려고하는데 아직 작동하지 않아서 이유가 확실하지 않습니다. 이 오류가 발생했습니다. 조금 떨어져있는 다른 클래스의 내 액티비티에서 함수를 호출하고 있지만 참조가 있습니다. 이 로그 오류가 나타납니다. 나는 내 광고에 대한 모든 실제 호출을 가져 왔음을 알고있다. 나는 문자 그대로 빈 함수를 호출하고있다.이 활동 클래스

01-19 07:32:54.440: E/AndroidRuntime(13651): FATAL EXCEPTION: Thread-49013 
01-19 07:32:54.440: E/AndroidRuntime(13651): java.lang.IllegalStateException: setAdListener must be called on the main UI thread. 
01-19 07:32:54.440: E/AndroidRuntime(13651): at azy.b(SourceFile:174) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at xq.a(SourceFile:511) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at ya.onTransact(SourceFile:105) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at android.os.Binder.transact(Binder.java:326) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at com.google.android.gms.internal.ac$a$a.a(Unknown Source) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at com.google.android.gms.ads.InterstitialAd.c(Unknown Source) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at com.google.android.gms.ads.InterstitialAd.loadAd(Unknown Source) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at net.timepieceent.Pong.DroidPongActivity.loadAndDisplayAd(DroidPongActivity.java:65) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at net.timepieceent.Pong.MainMenu.stateChange(MainMenu.java:363) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at net.timepieceent.Pong.MainMenu.buttonCheck(MainMenu.java:219) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at net.timepieceent.Pong.MainMenu.update(MainMenu.java:151) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at com.badlogic.framework.AndroidFastRenderView.run(AndroidFastRenderView.java:48) 
01-19 07:32:54.440: E/AndroidRuntime(13651): at java.lang.Thread.run(Thread.java:856) 

이 오류가 발생하는 이유는 누구입니까? 나는 이것이 내가 실제로 가지고있는 문제이고, 광고가 아니라고 느낀다. 도와주세요. 미리 감사드립니다.

편집 : 나는 Google Play 서비스 라이브러리를 가져 갔고 여전히이 오류가 발생합니다. 나는 setAdListener에 대해 아무 말도하지 않는다. 왜냐하면 나는 그것을 전혀 호출하지 않기 때문이다.

편집 : 내 프로그램이 의심 할 여지없이 고장났습니다. DroidPongActivity 전체를 삭제 했으므로 응용 프로그램이 실행되지 않도록해야합니다.하지만 여전히 똑같은 일을하고 있습니다. 이것은 기괴하다.

편집 : thanks everyone. 프로젝트를 수정 한 후 Runonuithread 솔루션을 적용했습니다. 이클립스는 새로운 코드 변경을 설치하지 않았기 때문에 프로젝트를 다른 폴더에 복사하고 이클립스에서 삭제 한 다음 다시 가져왔다.

이 토론을 끝내 겠지만 어떻게해야할지 모르겠다.

답변

1

무슨 일을 하던지 오류는 UI 스레드에서 수행해야한다는 오류입니다.

runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 

     // your code here 

    } 
}); 

오류는 사용자 작업의 65 번째 줄입니다. 그 (그리고 비슷한 코드)를 run() 메소드로 옮기십시오.

+0

65 번 라인이 없기 때문에 전체 프로젝트가 고장 났다고 생각하기 시작합니다.하지만 여전히 오류가 발생합니다. 지금 무엇을해야할지 모르겠습니다. 당신의 도움을 주셔서 감사합니다. –

+0

그것은 65라고 말합니다. net.timepieceent.Pong.DroidPongActivity.loadAndDisplayAd (DroidPongActivity.java:65) DroidPongActivity에 대한 코드를 게시 할 수 있습니까? – MikeHelland

+0

DroidPongActivity에서 모든 코드를 문자 그대로 제거했으며 코드가있는 것처럼 프로그램을 실행합니다. 이해할 수는 있지만 실제로 응용 프로그램을 제거하고 다시 설치해야합니다. 내 프로젝트에서 무슨 일이 일어나고 있는지 모르겠다. 확인해야 할 것이 한 가지 더 있습니다. 그런 다음 여기에서 다시 확인하겠습니다. –

0

분명히 다른 스레드에서 기본 UI 메서드를 호출하고 있는데 참조가 있어도 다른 스레드에서 직접 UI 관련 메서드를 호출 할 수는 없습니다.

당신은 당신이 UI 스레드 떨어져 일을하려고하는 것 같다 당신의 로그 캣 오류에서 UI 스레드 https://developer.android.com/training/multiple-threads/communicate-ui.html

+0

나는이 프로젝트를 통해 어떤 일이 벌어지는 지 알아 내야 만한다.이 오류는 더 이상 이해가되지 않는다. 도움과 참조에 감사드립니다. –

0

와 통신하는 방법을 아래 링크를 확인할 수는, 즉 UI 스레드에서 수행해야합니다. Do do this,

Runnable r = new Runnable() { 

    @Override 
    public void run() { 
     // Do Here whatever you are trying to do 
    } 
} 

runOnUiThread(r); 

희망 사항이 문제가 해결 될 것이라고 희망이 아니라면 알려 주시기 바랍니다.

관련 문제