如何 return 来自 Android 中的 Volley 的单个整数值?
How to return single integer value from Volley in Android?
我正在尝试使用 Volley 获取单个整数值。
In this example the number is 14
在调试器中 我得到正确的值 14 并将其分配给 vNumber 同时在 try/catch 块中,但是当我尝试 return vNumber 时,我得到值 0 作为 returned 号。
这是 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 中时该值是正确的)然后从中获取它,但它仍然无法正常工作。我可以在我的本地数据库中创建一个新的 table 并保存数据,但在这个用例中没有必要。
你对 return 的正确值有什么建议吗?我做错了什么?
干杯
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
}
我正在尝试使用 Volley 获取单个整数值。
In this example the number is 14
在调试器中 我得到正确的值 14 并将其分配给 vNumber 同时在 try/catch 块中,但是当我尝试 return vNumber 时,我得到值 0 作为 returned 号。
这是 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 中时该值是正确的)然后从中获取它,但它仍然无法正常工作。我可以在我的本地数据库中创建一个新的 table 并保存数据,但在这个用例中没有必要。
你对 return 的正确值有什么建议吗?我做错了什么?
干杯
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
}