¿Cómo puedo devolver el valor de la función onResponse of Volley?

public class getString { String tag_string_req = "string_raq"; String url = "http://10.0.2.2/eat/locations/index.json"; String result=""; public String get_String() { StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener() { @Override public void onResponse(String response) { result=response; System.out.println(response); ; } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { System.out.println(volleyError.getMessage()); } }); AppController.getInstance().addToRequestQueue(strReq, tag_string_req); return result; }} 

Me gustaría construir un objeto de getString y llamar a get_String en otros campos. Pero parece que es difícil obtener el resultado del onResponse. Sé que no puede funcionar de esta manera actual. ¿Alguien podría ayudarme a resolver este problema?

Desea utilizar interfaces de callback de esta manera:

 public void getString(final VolleyCallback callback) { StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener() { @Override public void onResponse(String response) { ... // (optionally) some manipulation of the response callback.onSuccess(response); } }... }} 

Donde la callback se define como

 public interface VolleyCallback{ void onSuccess(String result); } 

Código de ejemplo dentro de la actividad:

 public void onResume(){ super.onResume(); getString(new VolleyCallback(){ @Override public void onSuccess(String result){ ... //do stuff here } }); } 

También puede hacer que VolleyCallback más robusto, utilizando tipos generics si desea hacer procesamiento, o agregando los métodos start() , failed(Exception e) , complete() , etc. para hacer un poco más de comprobación de estado de grano fino.

Tenga en cuenta que se trata de una llamada asíncrona, por lo que tendrá que actualizar las vistas, etc. cuando recupere el resultado (dentro de success() ).