首页 > 解决方案 > JSONArray 中的项目总和在活动重新启动时翻倍

问题描述

我正在使用 Fast Android Networking 库来解析JSONArray从我的 PHP/MySQL API 生成的。我正在使用 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();
                }
            });
}

我究竟做错了什么?

标签: androidarraysnetworking

解决方案


你不能在循环之前让你的变量为零吗?


推荐阅读