[英]crashes when I try to call function from activity class
好,所以我遇到了一個非常奇怪的情況。 我正在嘗試在我的應用中設置廣告,但目前還沒有成功,我還不確定為什么。 我一直遇到這個錯誤。 我正在從另一個類的活動中的活動中調用某個函數,但該類有點斷開連接,但是我確實有一個引用。 我收到此日志錯誤。 請注意,我已經撤消了所有對廣告的實際調用,實際上是在調用一個空函數。
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,這應該可以使它無法運行,但它仍在做相同的事情。 這很奇怪。
編輯:謝謝大家。 修復項目后,我應用了Runonuithread解決方案。 Eclipse並未安裝新的代碼更改,因此我將項目復制到另一個文件夾,在eclipse中將其刪除,然后重新導入。
我將結束這個討論,但我不知道該怎么做。
無論您在做什么,錯誤都是說應該在UI線程上完成。
runOnUiThread(new Runnable() {
@Override
public void run() {
// your code here
}
});
錯誤是您的活動的第65行。 將其(也許類似的代碼)移到run()方法中。
顯然,您正在另一個線程中調用主UI方法,即使具有引用,也無法直接從另一個線程中調用與UI相關的方法。
您可以在下面查看有關如何與UI線程進行通信的鏈接https://developer.android.com/training/multiple-threads/communicate-ui.html
從您的logcat錯誤看來,您正在嘗試在UI線程上執行某些操作,這必須在UI線程上完成。 這樣吧
Runnable r = new Runnable () {
@Override
public void run() {
// Do Here whatever you are trying to do
}
}
runOnUiThread(r);
希望這能解決您的問題,如果沒有,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.