2015-09-16 143 views
1

我正在学习编程,我面临的问题是我相信很容易解决。Store Volley请求数据

我使用Google Volley提出请求,并想知道如何存储请求中提供的信息,以便在我的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。

我从一开始就研究了很多,但没有发现这个简单的问题。

谢谢你!

回答

1

您可以使用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", ""); 
0

onResponse方法response数据类型是JSONArrayJSONObject访问这些数据,所以什么u必须做的就是它的字符串是简单的调用response.toString() 现在ü可以像这样在你的parseJSON()返回它:

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 ; 

    } 

或 您可以在您的活动中设置一个字符串并将其称为parseJSON()