リーダーボード データを回復するための OpenFeint メソッドの 1 つは、(素晴らしいハックを使用して) ローカル変数の 1 つを変更するメソッドへの非同期コールバックを必要とします。私の問題は、CB が呼び出されると実行が続行され、スコア値がまだ変更されていないため、nullPointer が返されることです。すべてを同期させるか、メイン関数からコールバック値を返す方法はありますか?
private long getScoreLeaderBoard(String idLeaderBoard) {
for (Leaderboard l : OpenFeintX.leaderboards) {
if (l.name == null)
break;
if (l.resourceID().equalsIgnoreCase(idLeaderBoard)) {
final Score s[] = new Score[1];
l.getUserScore(OpenFeint.getCurrentUser(),
new Leaderboard.GetUserScoreCB() {
@Override
public void onSuccess(Score score) {
s[0] = score;
}
});
if (s[0] != null) // If user has no score onSuccess get a null
return s[0].score;
else
return 0;
}
}
return 0;
}
コールバック定義: http://m.the9.com/ioshelp/Android_en/doc/com/openfeint/api/resource/Leaderboard.GetUserScoreCB.html