2014-01-19 79 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) 

沒有人有任何想法,爲什麼我可能會得到這個錯誤?我覺得這實際上是我遇到的問題,而不是廣告。請幫忙。非常感謝你提前。

編輯:我甚至把谷歌播放服務庫了,我仍然得到這個錯誤。我不明白爲什麼它會說setAdListener,因爲我根本就沒有調用它。

編輯:我的程序毫無疑問是小故障。我已經刪除了整個DroidPongActivity,它應該使應用程序無法運行,但它仍然執行完全相同的操作。這是奇怪的。

編輯:謝謝大家。我在修復我的項目後應用了Runonuithread解決方案。 Eclipse沒有安裝新的代碼更改,所以我將該項目複製到另一個文件夾,在eclipse中將其刪除並重新導入。之後,所有內容都變得華麗。

我會關閉這個討論,但我不知道該怎麼做。

回答

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線程 https://developer.android.com/training/multiple-threads/communicate-ui.html

+0

一旦我弄清楚我的項目發生了什麼,我必須仔細閱讀這個錯誤,這個錯誤甚至沒有意義了。感謝您的幫助和參考。 –

0

從您的logcat的錯誤似乎您試圖做一些事情關閉UI線程通信,即必須在UI線程來完成。這樣做,

Runnable r = new Runnable() { 

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

runOnUiThread(r); 

希望這將解決您的問題,如果不是,請讓我知道。

相關問題