'How to start onResponse method after getParams has been executed with StringRequest in Android Studio Volley?

I am trying to start an JSONArrayRequests after the StringRequest has finished. The StringRequest is POST requet and the JSONArrayRequest is GET request. I want the JSONArray to start when the params of the String is uploaded so as I will be able to retrieve this data again. Below is my code:

RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        StringRequest stringRequest = new StringRequest(Request.Method.POST, JSON_URL_UPLOAD_IMAGE, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    if (response.equals("1")) {
                        JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, JSON_URL, null,
                                new Response.Listener<JSONArray>() {
                                    @Override
                                    public void onResponse(JSONArray response) {
                                        for (int i=0;i<response.length();i++) {
                                            try {
                                                JSONObject object = response.getJSONObject(i);
                                                String USER_ID = object.getString("user_id");
                                                String POST_DATE = object.getString("post_date");
                                                if (USER_ID.equalsIgnoreCase(CurrentUser)){
                                                    Toast.makeText(getContext(), "First if.", Toast.LENGTH_SHORT).show();
                                                    if (POST_DATE.equalsIgnoreCase(dateTime)) {
                                                        Toast.makeText(getContext(), "Second if.", Toast.LENGTH_SHORT).show();
                                                    }
                                                }
                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    }
                                }, new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Log.e("Volley Error", error.getMessage());
                            }
                        });

                        requestQueue.add(arrayRequest);
                        requestQueue.start();

                    }

                }catch (Exception e) {
                    e.printStackTrace();
                    Log.d("ERROR", e.getMessage().toString());
                    Toast.makeText(getContext(), "ERROR:"+e.getMessage(), Toast.LENGTH_LONG).show();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){
            @Nullable
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("post_author", CurrentUser);
                if (!details.getText().toString().equalsIgnoreCase("")){
                    params.put("post_content", details.getText().toString());
                    params.put("post_excerpt", details.getText().toString());
                }else {
                    params.put("post_content", "");
                    params.put("post_excerpt", "");
                }
                params.put("post_date", dateTime);
                params.put("post_date_gmt", dateTime);
                params.put("post_title", CurrentUser+"-"+CurrentUser+"-"+timeStampStr);
                params.put("post_status", "publish");
                params.put("comment_status", "closed");
                params.put("ping_status", "closed");
                params.put("post_name", CurrentUser+"-"+CurrentUser+"-"+timeStampStr);
                params.put("post_modified", dateTime);
                params.put("post_modified_gmt", dateTime);
                params.put("guid", "https://www.selfcial.com/peepso-post/"+CurrentUser+"-"+CurrentUser+"-"+timeStampStr+"/");
                params.put("post_type", "peepso-post");
                return params;
            }
        };


        requestQueue.add(stringRequest);
        requestQueue.start();

What I tried to do is to add a RequestQueue in order to make the requests wait until the other one is finished but it didn't work. The problem I have is that when the inside request starts it doesn't find the "if" statement(namely this:(USER_ID.equals(CurrentUser) && POST_DATE.equals(dateTime)). So, what I can understand is that the second starts before the first has finished with the params. What can I do? Any answer will be appreciated!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source