我正在尝试创建一种使用Volley进行stringRequest的方法来获取两个LatLng点之间的距离。我使用回调传递值,而不是将其传递给return,因为返回是在onResponse方法之前执行的。 这是我制作StringRequest的方法。
public void makeRequest(LatLng origin, LatLng dest, @Nullable final makeRequestCallbacks callbacks){
final String url = formUrl(origin,dest);
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//edit response
callbacks.onSuccess(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {}
});
queue.add(stringRequest);
}
这是我要传递值的方法
public void findDist(){
LatLng [] temp = new LatLng[randomNum+2];
makeRequest(temp[i],temp[j], new makeRequestCallbacks() {
@Override
public void onSuccess(@NonNull String value) {
//do something with value
}
});
}
这是界面
public interface makeRequestCallbacks {
void onSuccess(@NonNull String value);
}
如果我保持这种状态,则需要在每种方法中使用回调,但这似乎不太有效。还有其他传递值的方法吗?