我正在使用快速Android网络库来解析从我的PHP / MySQL API生成的JSONArray
。我正在使用for循环求和JSONArray
中的所有整数值。当我第一次启动将数据发送到的活动(作为静态引用)时,一切工作都很好,但是在重新启动时,数据会加倍,即如果首次启动时的总和为500,则在重新启动时返回1000。
这是我用来解析JSONArray的方法
public void getGroupStats() {
MaterialDialog.Builder builder = new MaterialDialog.Builder(Splash.this)
.progress(true, 100)
.content("Loading...")
.cancelable(false);
dialog = builder.build();
dialog.show();
AndroidNetworking.post(Helper.Header + "/savings/api/Api.php?apicall=getgroups")
.addBodyParameter("goal", sharedPreferences.getString("Goal", ""))
.addBodyParameter("type", sharedPreferences.getString("Type", ""))
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
JSONArray jsonArray = null;
try {
jsonArray = response.getJSONArray("savings");
for (int j = 0; j < jsonArray.length(); j++) {
obj = (JSONObject) jsonArray.get(j);
groupsaving += Integer.parseInt(obj.getString("saving"));
groupsaved += Integer.parseInt(obj.getString("saved"));
Helper.Members = jsonArray.length();
}
Intent intent = new Intent(Splash.this, Statistics.class);
intent.putExtra("Title", textView.getText().toString());
if (textView.getText().toString().contains("SAVVY SAVER")) {
Helper.Image = "smallest_bag";
} else if (textView.getText().toString().contains("POWER SAVER")) {
Helper.Image = "small_bag";
} else if (textView.getText().toString().contains("SUPER SAVER")) {
Helper.Image = "big_bag";
} else {
Helper.Image = "biggest_bag";
}
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
Helper.GroupSaving = groupsaving;//to be used in next activity
Helper.GroupSaved = groupsaved;
Toast.makeText(getApplicationContext(), String.valueOf(groupsaved) + " " + String.valueOf(groupsaving), Toast.LENGTH_LONG).show();
dialog.cancel();
}
@Override
public void onError(ANError error) {
Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_LONG).show();
dialog.cancel();
}
});
}
我在做什么错了?
答案 0 :(得分:1)
想让您在循环之前将变量设为零吗?