将分数提交到Android排行榜

时间:2015-01-29 23:53:13

标签: java android google-play

我终于得到了我的排行榜并登录我的应用程序,但是当我玩游戏并重新打开排行榜时,排行榜中仍然没有得分。我在提交高分时遇到了麻烦。

我使用代码提交:Games.Leaderboards.submitScoreImmediate(getApiClient(), String.valueOf(R.string.number_guesses_leaderboard),oldScore);

我的OnCreate:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_game_over);

  mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN)
                .addApi(Games.API).addScope(Games.SCOPE_GAMES)
                        // add other APIs and scopes here as needed
                .build();

 int newScore = GameOver.score;


        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);

        int oldScore = prefs.getInt("key", 0);
        if (newScore > oldScore) {
            SharedPreferences.Editor edit = prefs.edit();
            edit.putInt("key", newScore);
            edit.commit();
  } else {


            EditText HighScore = (EditText) findViewById(R.id.HighScoreT);
            HighScore.setText("" + oldScore);
  Games.Leaderboards.submitScoreImmediate(getApiClient(), String.valueOf(R.string.number_guesses_leaderboard),oldScore);
        }

2 个答案:

答案 0 :(得分:0)

R.string.number_guesses_leaderboard最终是由android工具定义的唯一标识你的number_guesses_leaderboard字符串的唯一整数。这称为资源标识符。例如,这可能设置为0x7f0603fb;在你的R.java文件中。

当您执行String.valueOf(R.string.number_guesses_leaderboard)时,您实际上将整数值0x7f0603fb转换为该数字的字符串表示形式。

所以,除非" 2131100667"是你的排行榜的ID,我不认为这是你的意图。

相反,尝试这样做(当然,假设此字符串资源的值确实是您的排行榜的ID):

Games.Leaderboards.submitScoreImmediate(getApiClient(), 
    getString(R.string.number_guesses_leaderboard),oldScore);

你也可以考虑设置translatable =" false"在这个字符串上或移动它做ids.xml,因为这真的不应该被翻译。

答案 1 :(得分:0)

这是一种更好的方法,我使用它,它对我有用,帮助它有用

Games.Leaderboards.submitScore(myclient, 
                getString(R.string.number_guesses_leaderboard),  
                HighScore);