2014-08-27 56 views
1

我試圖在使用Google Play遊戲服務的遊戲中添加排行榜。無法在未調用Looper.prepare()的線程中創建處理程序 - 實現排行榜

我在其中顯示排行榜並提交分數的類從Framework擴展屏幕,因此我創建了該屏幕擴展了使用Google Play遊戲服務所需的BaseGameActivity。

我得到這個錯誤,當我開始應用:其中錯誤指向的代碼

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
      at android.os.Handler.<init>(Handler.java:197) 
      at android.os.Handler.<init>(Handler.java:111) 
      at android.app.Activity.<init>(Activity.java:784) 
      at android.support.v4.app.FragmentActivity.<init>(FragmentActivity.java:76) 
      at com.x.x.BaseGameActivity.<init>(BaseGameActivity.java:65) 
      at com.x.framework.Screen.<init>(Screen.java:8) 
      at com.x.x.LoadingScreen.<init>(LoadingScreen.java:11) 
      at com.x.x.SplashLoadingScreen.update(SplashLoadingScreen.java:19) 
      at com.x.framework.implementation.AndroidFastRenderView.run(AndroidFastRenderView.java:47) 
      at java.lang.Thread.run(Thread.java:841) 

部分:

BaseGameActivity.java

...protected BaseGameActivity() { 
    super(); 
}... 

Screen.java

...public Screen(Game game) { 
     this.game = game; 
    }... 

插件gScreen.java

...public LoadingScreen(Game game) { 

     super(game); 
    }... 

SplashLoadingScreen.java

...game.setScreen(new LoadingScreen(game));... 

AndroidFastRenderView.java

...game.getCurrentScreen().update(deltaTime);... 

有誰知道如何解決這一問題?

+0

請不要自行破壞您的帖子,即使它被擱置爲重複 – laalto 2014-08-28 19:03:02

回答

1

基於堆棧跟蹤,它看起來像您試圖觸摸視圖並在後臺線程中創建Activity。你不應該。試着在主線上做,你會沒事的。

0
  1. 不要試圖從後臺線程更新用戶界面。使用例如runOnUiThread()Runnable發佈到主UI線程上運行的處理程序。

  2. 不要嘗試使用new自己實例化活動類,例如LoadingScreen。僅使用Intent可間接實例化活動或更改設計,以便實例化的類不是Activity

相關問題