3
votes

I'm learning to program by myself and I am facing a problem which I believe is easy to solve.

I'm making requests using Google Volley and like to know how I store the information coming in the request for me to work with them in my 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);
}

I do not know how to pass the data of this separate method to main.

I'm starting alone and has researched a lot, but found nothing with this simple problem.

Thank you anyway!

2

2 Answers

3
votes

You can use SharedPreferences to store the data. Create a method to do that.

private void sharedResponse(String response) {
    SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = m.edit();
    editor.putString("Response", response);
    editor.commit();
}

And call this method from your onResponse.

@Override
public void onResponse(String response) {
  //I need to store the data for use in the method onCreate.
  sharedResponse(response);
}

You can access this data from other class by

SharedPreferences m = PreferenceManager.getDefaultSharedPreferences(this);
mResponse = m.getString("Response", "");
1
votes

in onResponse method the data type of response is JSONArray or JSONObject, so what u have to do to get it in String is simply call response.toString() now u can return it in your parseJSON() like this:

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 ;

    }

or you can make a public static function in you activity to set a String and call it in the parseJSON()