我怎样才能返回从Volley函数onResponse的价值?

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<String>() { @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; }} 

我会build立一个getString的对象,并在其他字段中调用get_String。 但似乎很难从反应中得出结果。 我知道目前这种方式无法运作。 谁能帮我解决这个问题?

你想要使用callback接口,如下所示:

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

callback被定义为

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

活动中的示例代码:

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

你也可以使VolleyCallback更健壮,使用genericstypes,如果你想要处理,或者添加start()failed(Exception e)complete()等方法来做更细粒度的状态检查。

请记住这是一个asynchronous调用,所以当你得到结果(在success() )时,你将不得不更新视图等。