我一直在努力制作一款基于回合制的多人游戏应用程序,到目前为止,情况一直很顺利:我的应用程序可以与本地服务器通信,并从中检索信息。现在,当我尝试将我收到的信息放入arraylist时,我没有收到任何错误,但是arraylist保持为空,这会导致我的应用程序在调用myArrayList.get(i)时崩溃。
以下是设置数组的代码:
我相信问题正在设置下面的阵列
//The "i" below is the iterator used for the index
for (int i = 1; i < getSharedPreferences("INFO", MODE_PRIVATE).getInt("numberOfGames", 0) + 1; i++) {
try {
SharedPreferences s = getSharedPreferences("INFO", MODE_PRIVATE);
SharedPreferences.Editor e = s.edit();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("gameid", s.getString("gameID" + i, null)));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(
REFRESH_URL, "POST", params);
success = json.getInt("success");
Log.i("LOGI", "Success: " + success);
if (success == 1) {
Log.i("LOGI", "**********GAME #" + s.getString("gameID" + i, null) + "**********");
Log.i("LOGI", "PLAYER1: " + json.getString("player1"));
Log.i("LOGI", "PLAYER2: " + json.getString("player2"));
Log.i("LOGI", "Score1: " + json.getString("score1"));
Log.i("LOGI", "Score2: " + json.getString("score2"));
Log.i("LOGI", "Turn: " + json.getString("turn"));
Log.i("LOGI", "Game Chosen: " + json.getString("gameChosen"));
//EVERYING BELOW IS THE PROBLEM
player1.add(i, json.getString("player1"));
player2.add(i, json.getString("player2"));
score1.add(i, Integer.parseInt(json.getString("score1")));
score2.add(i, Integer.parseInt(json.getString("score2")));
turn.add(i, Integer.parseInt(json.getString("turn")));
gameChosen.add(i, Integer.parseInt(json.getString("gameChosen")));
}
以下是获取数组的代码
private void drawCurrentGames(Canvas canvas){
String player1;
String player2;
String opponent;
int score1;
int score2;
Log.i("LOGI", "WOERKIGN");
for(int i=0; i<Main.games; i++){
//The app crashes here
player1 = Main.player1.get(i);
player2 = Main.player2.get(i);
score1 = Main.score1.get(i);
score2 = Main.score2.get(i);
}
}
当迭代器不用于设置或获取arraylist时,一切都很好,但是当应用程序崩溃时
答案 0 :(得分:1)
将项添加到数组的迭代器从1开始。当您调用arraylist的add(int, Object)
方法时,添加的对象将添加到第一个参数的索引处。
因此,要添加的第一个项目是在索引1处添加的。当您从该数组列表中读取时,您从0开始。索引0处没有任何内容,这就是您的应用程序崩溃的原因。