我终于得到了我的排行榜并登录我的应用程序,但是当我玩游戏并重新打开排行榜时,排行榜中仍然没有得分。我在提交高分时遇到了麻烦。
我使用代码提交: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);
}
答案 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);