Проблема заключается в том, что запросы VolleyRequest выполняются в асинхронных потоках. Правильный способ реализовать это - иметь обратный вызов после получения ответа.
создать интерфейс
public interface VolleyResultCallBack {
void onVolleyResultListener(String response, String requestUrl);
void onVolleyErrorListener(VolleyError error,String requestUrl);
}
и ваш метод
public static void ProcessAPIRequest(VolleyResultCallBack resultListener,String pURL, Context pContext){
iResponse="";
StringRequest stringRequest = new StringRequest(pURL,
new Response.Listener<String>() {
@Override
public void onResponse(String strResponse) {
resultListener.onVolleyResultListener(strResponse,pURL);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//error.networkResponse;
//Log.e("error", "" + error);
resultListener.onVolleyErrorListener(error,pURL);
}
});
RequestQueue requestQueue = Volley.newRequestQueue(pContext);
requestQueue.add(stringRequest);
}
Ваш класс: -
public class TestActivity extends AppCompatActivity implements VolleyResultCallBack {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ClassName.ProcessAPIRequest(this,"Your URl",this)
}
@Override
public void onVolleyResultListener(String response, String requestUrl) {
if(requestUrl.equals("Your URl"){
//do some thing with response
}
}
@Override
public void onVolleyErrorListener(VolleyError error,String requestUrl) {
// error occured get error and show it
}
}