我有两个全局变量currentTemp
和currentHum
,它们在调用Volley的onResponse
方法时设置。我的代码如下:
// Request a string response from the provided URL.
private JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, WEATHER_URL, null, new Response.Listener<JSONObject>() {
public void onResponse(JSONObject response) {
try {
JSONObject main = new JSONObject(response.getString("main"));
currentTemp = main.getString("temp");
currentHum = main.getString("humidity");
Log.i("RES", "Temp: " + main.getString("temp") + " Hum: " + main.getString("humidity"));
} catch (JSONException e) {
e.printStackTrace();
}
}}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(appContext, "An error occurred while retrieving weather info", Toast.LENGTH_LONG).show();
Log.e("ERR", "ERROR RET WEATHER DATA");
}
});
// Call the OpenWeatherMap API and get data such as temperature and humidity
private String getWeatherInfo(String key) {
// Add the request to the RequestQueue to invoke the API
queue.add(jsonObjectRequest);
// Access variables set by Volley's onResponse here.
switch (key) {
case "temp":
return String.valueOf(Float.parseFloat(currentTemp) - 273.15);
case "hum":
return currentHum;
default:
return " ";
}
}
我希望能够在调用它的onResponse
方法中访问由getWeatherInfo
方法设置的全局变量的值。然后将值传递给switch语句进行处理。如何在不获取currentTemp
和currentHum
的空值的情况下进行操作?
答案 0 :(得分:0)
该工作旨在通过使用界面来完成。如果您不知道接口回调,请通过 this answer 进行。这将帮助您理解界面,并且还可以指导您处理截击响应。
也不建议您使用全局变量来设置任何响应,而是可以从凌空类传递整个JsonObject
。并在您拨打电话的地方进行解析。您可以使用 Gson 来解析对 Model
或 ArrayList
的响应。