我自己学习编程,而且我遇到了一个我认为很容易解决的问题。
我正在使用Google排球提出请求,并希望了解我如何存储请求中的信息,以便我在onCreate中与他们合作。
public void parseJSON(){ StringRequest getRequest = new StringRequest(Request.Method.GET,activity.getString(R.string.URL), new Response.Listener() { @Override public void onResponse(String response) { I need to store the data for use in the method onCreate. }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("Error.Response", error.toString()); } }); request.add(getRequest); }
我不知道如何将这个单独方法的数据传递给main。
我一个人开始研究了很多,但对这个简单的问题一无所获。
无论如何,谢谢!
答案 0 :(得分:3)
您可以使用SharedPreferences存储数据。创建一个方法来做到这一点。
private void sharedResponse(String response) {
SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = m.edit();
editor.putString("Response", response);
editor.commit();
}
并从onResponse调用此方法。
@Override
public void onResponse(String response) {
//I need to store the data for use in the method onCreate.
sharedResponse(response);
}
您可以通过
从其他课程访问此数据SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
mResponse = m.getString("Response", "");
答案 1 :(得分:1)
onResponse
方法中,response
的数据类型为JSONArray
或JSONObject
,因此要在String中获取它只需调用{{1} }
现在你可以在你的response.toString()
中返回它:
parseJSON()
或
你可以在你的活动中创建一个公共静态函数来设置一个String并在public String parseJSON(){
final String responseStr = new String();
JsonArrayRequest request = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
responseStr = response.toString();
for (int i = 0; i < response.length(); i++) {
try {
//parse you Json here
} catch (JSONException e) {
Log.d(e.toString());
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(error.toString());
}
});
Volley.newRequestQueue(context).add(request);
return responseStr ;
}