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;
}}
我将建立一个getString对象,并在其他字段中调用get_String。但是似乎很难从onResponse中获得结果。我知道它不能以这种当前方式工作。谁能帮我解决这个问题?
您想像这样使用回调接口:
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);
}
}...
}}
回调定义为
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
更稳健,使用泛型类型,如果你想要做的处理,或添加start()
,failed(Exception e)
,complete()
,等方法,做一些更细粒度的状态检查。
请记住,这是一个异步调用,因此在返回结果时(在中success()
),您将必须更新视图等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句