我有以下方法,使用Volley提交http
请求:
private boolean SaveInformationToServer(Information information)
{
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
return true;
}
catch (Exception ex){
return false;
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
return false;
}
});
queue.add(stringRequest);
}
我要求此方法返回true
或false
,但目前它会提供错误void method cannot return a value
。我尝试了一个变量,然后得到了cannot refer to the non-final local variable inside an inner class
。
如何让此方法向其调用者返回boolean
值?
答案 0 :(得分:1)
onResponse
的返回类型无效,而且它是匿名类的函数,因此您无法将匿名类的值返回给您的截击请求调用者。
你可以创建你的函数,可以在volley响应中调用它们并将你的代码放在执行结果而不是保留一个标志,这将使你的代码更具结构性和可读性(你也可以在onSuccess中设置标志)。 / p>
void onSuccess(String response){
// do what you want to do
}
void onError(VolleyError error){
// do what you want to do
}
private void SaveInformationToServer(Information information)
{
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
onSuccess(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onError(error);
}
});
queue.add(stringRequest);
}