繁体   English   中英

如何从 Android 中的 Volley 返回单个整数值?

[英]How to return single integer value from Volley in Android?

我正在尝试使用 Volley 获取单个整数值。

在这个例子中,数字是 14

在调试器中,我得到正确的值14并将它分配给 vNumber,而在 try/catch 块中,但是当我尝试返回 vNumber 时,我得到的值为0作为返回的数字。

这是 JSON 结果。

{"result":[{"version":"14"}]}

下面是这个函数的代码:

 int vNumber; public int getVersionNumber() { StringRequest stringRequest = new StringRequest(Request.Method.POST, GET_VERSION_NUMBER, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject object = new JSONObject(response); JSONArray jsonArray = object.getJSONArray("result"); JSONObject jsonObject = jsonArray.getJSONObject(0); vNumber = jsonObject.getInt("version"); } catch (JSONException e) { e.printStackTrace(); Log.d(TAG, "JSONException: " + e); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d(TAG, "VolleyError: " + error); } }); RequestQueue requestQueue = Volley.newRequestQueue(context); requestQueue.add(stringRequest); return vNumber; }

我已经尝试使用 sharedPreferences 并将值放在 textView 中(当我在 textView 中设置它时该值是正确的),然后从中获取它,但它仍然无法正常工作。 我可以在本地数据库中创建一个新表并保存数据,但在此用例中没有必要。

您对如何返回正确的值有什么建议,我在这里做错了什么?

干杯

public void fetchVersionNumber() {

    StringRequest stringRequest = new StringRequest(Request.Method.POST, GET_VERSION_NUMBER,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject object = new JSONObject(response);
                        JSONArray jsonArray = object.getJSONArray("result");
                        JSONObject jsonObject = jsonArray.getJSONObject(0);

                        vNumber = jsonObject.getInt("version");
                        compareAndUpdate(vNumber)

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Log.d(TAG, "JSONException: " + e);
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(TAG, "VolleyError: " + error);
                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(context);
    requestQueue.add(stringRequest);
}

public void compareAndUpdate(int vNumber){

//compare and do your operation
// Get from sharedPref and compare
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM