[英]No list returned while retrieving scores from Scoreloop server
我正在尝试从Scoreloop服务器检索设备用户的分数。 这是一个AndEngine游戏。 我尝试了以下方法:
observer = new RequestControllerObserver() {
@Override
public void requestControllerDidFail(RequestController arg0,
Exception arg1) {
// TODO Auto-generated method stub
}
@Override
public void requestControllerDidReceiveResponse(
RequestController requestController) {
// TODO Auto-generated method stub
myScoresController = (ScoresController) requestController;
myScoresController.setSearchList(SearchList
.getGlobalScoreSearchList());
myScoresController.setMode(mode);
myScoresController.setRangeLength(20);
myScoresController.loadRangeForUser(Session.getCurrentSession()
.getUser());
Log.i("score", "" + myScoresController.getScores().get(0).getResult());
// List<Score> retrievedScores = myScoresController.getScores();
}
Log.i()甚至没有出现。 我也试过这个:
observer = new RequestControllerObserver() {
@Override
public void requestControllerDidFail(RequestController arg0,
Exception arg1) {
// TODO Auto-generated method stub
}
@Override
public void requestControllerDidReceiveResponse(
RequestController requestController) {
// TODO Auto-generated method stub
}
myScoresController = new ScoresController(observer);
myScoresController.setSearchList(SearchList
.getGlobalScoreSearchList());
myScoresController.setMode(mode);
myScoresController.setRangeLength(20);
myScoresController.loadRangeForUser(Session.getCurrentSession()
.getUser());
Log.i("score", "" + myScoresController.getScores().get(0).getResult());
// List<Score> retrievedScores = myScoresController.getScores();
我正在尝试获取列表的第一个元素,然后获得比分结果。 但是没有列表。 错误显示为:
java.lang.IndexOutOfBoundsException
java.util.Collections$EmptyList.get(Collections.java:102)
但是我没有同时尝试以上两种方法。 当然有一个错误,但我看不到。
编辑:
我正在使用的整个课程如下:
public class ScoreLoopUpdater implements Runnable {
private double score;
private int mode;
private RequestControllerObserver observer;
private ScoresController myScoresController = null;
public ScoreLoopUpdater(double _score, int _mode) {
this.score = _score;
this.mode = _mode;
}
public void run() {
getGlobalHighscore();
ScoreloopManagerSingleton.get().onGamePlayEnded(
score, mode);
}
private void getGlobalHighscore() {
//the above codes including observer go inside here.
}
我正在使用此场景进行呼叫:
ScoreLoopUpdater scoreLoopUpdater = new ScoreLoopUpdater(theScore, theMode);
activity.runOnUiThread(scoreLoopUpdater);
在打了一些例子之后,我终于想出了正确的方法:
private void getGlobalHighscore() {
observer = new RequestControllerObserver() {
@Override
public void requestControllerDidFail(RequestController arg0,
Exception arg1) {
// TODO Auto-generated method stub
}
@Override
public void requestControllerDidReceiveResponse(
RequestController requestController) {
// TODO Auto-generated method stub
final ScoresController myScoresController = (ScoresController) requestController;
Log.i("score", "" + myScoresController.getScores().get(0).getResult());
// List<Score> retrievedScores = myScoresController.getScores();
}
};
ScoresController myScoresController = new ScoresController(observer);
myScoresController.setSearchList(SearchList
.getGlobalScoreSearchList());
myScoresController.setMode(mode);
myScoresController.setRangeLength(20);
myScoresController.loadRangeForUser(Session.getCurrentSession()
.getUser());
}
在requestControllerDidReceiveResponse函数内部只能调用getScores(),这意味着在收到响应后获取分数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.