簡體   English   中英

嘗試從活動類調用函數時崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM