2013-06-27 29 views
0

嗨,我希望在我開發的遊戲中構建Google+遊戲API。但是我有問題,我不能直接發送分數給API,因爲遊戲不能在Activity中運行。所以我whant將比分發送到在外部類的功能,所以我嘗試此代碼:Google+遊戲API java.lang.RuntimeException

private void updateGameOver(List<TouchEvent> touchEvents) { 
     int len = touchEvents.size(); 
     for (int i = 0; i < len; i++) { 
      TouchEvent event = touchEvents.get(i);   

        Leaboarder lea = new Leaboarder(); 
        lea.sendScore(Counter.getScore()); 

        nullify(); 
        game.setScreen(new MainMenuScreen(game)); 
        return; 
      } 
     } 

    } 

,但我得到了以下錯誤:

06-27 21:58:30.746: W/dalvikvm(5701): threadid=13: thread exiting with uncaught exception (group=0x40b88300) 
06-27 21:58:30.756: E/AndroidRuntime(5701): FATAL EXCEPTION: Thread-46367 
06-27 21:58:30.756: E/AndroidRuntime(5701): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at android.os.Handler.<init>(Handler.java:121) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at android.app.Activity.<init>(Activity.java:749) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at de.niklaskellner.flydroid.gui.GoogleGame.Leaboarder.<init>(Leaboarder.java:20) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at de.niklaskellner.flydroid.GameScreen.updateGameOver(GameScreen.java:174) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at de.niklaskellner.flydroid.GameScreen.update(GameScreen.java:80) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at de.niklaskellner.framework.implementation.AndroidFastRenderView.run(AndroidFastRenderView.java:47) 
06-27 21:58:30.756: E/AndroidRuntime(5701):  at java.lang.Thread.run(Thread.java:856) 

我Leaboarder類:

public class Leaboarder extends Activity implements GameHelper.GameHelperListener { 

    protected GameHelper mHelper; 
    protected int mRequestedClients = GameHelper.CLIENT_GAMES; 
    public static int score = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     int score = getIntent().getIntExtra("score", 0); 
     sendScore(score); 
    } 

    public void sendScore(int score) { 

         mHelper = new GameHelper(Leaboarder.this); 
         mHelper.setup(Leaboarder.this, mRequestedClients); 

         GamesClient mGamesClient = mHelper.getGamesClient(); 
         if (mHelper.isSignedIn()) {   

          mGamesClient.submitScore("", score); 
         } 
         else { 
          Toast.makeText(getBaseContext(), "Not Loggin - Score saved offline.", Toast.LENGTH_LONG).show(); 
          SharedPreferences pref = getSharedPreferences("offlineScore", 0); 
          int scoreOLD = pref.getInt("topscore", 0); 
          if (score > scoreOLD){ 
           pref.edit().putInt("topscore", score).apply(); 
          } 
         } 




    } 
} 

我的問題是我該如何解決這個問題?

回答

0

只需撥打Looper.prepare();作爲onCreate方法中的第二條語句。

+0

謝謝你,但它不會爲我工作。 –