如何返回此函数的响应?

时间:2019-07-23 06:01:12

标签: java android

我有一个带有String返回值的公共方法,但是我无法在结果上返回任何内容,因为它给了我无法返回的错误。我需要将方法的响应返回给调用此方法的类,请帮忙。

我尝试了吸气剂和塞特剂,没有帮助,只是给了我更多的错误。

public String callGraphAPI(String url) {
    Log.d(TAG, "Starting volley request to graph");

    /* Make sure we have a token to send to graph */
    if (mAuthResult.getAccessToken() == null) {return "not signed in";}

    RequestQueue queue = Volley.newRequestQueue(this);
    JSONObject parameters = new JSONObject();

    try {
        parameters.put("key", "value");
    } catch (Exception e) {
        Log.d(TAG, "Failed to put parameters: " + e.toString());
    }
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url,
            parameters,new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            /* Successfully called graph, process data and send to UI */
            Log.d(TAG, "Response: " + response.toString());
----------------------------------------------------------------------------
                return "Hello";
----------------------------------------------------------------------------
//this is where i want to return the resutl
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error: " + error.toString());
        }
    }) {
        @Override
        public Map<String, String> getHeaders() {
            Map<String, String> headers = new HashMap<>();
            headers.put("Authorization", "Bearer " + mAuthResult.getAccessToken());
            return headers;
        }
    };

错误不能从void方法返回。我知道,但是我如何才能得到回复?我怎样才能从这种方法中得到它?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用回调。

public interface Callback {

    void onResult(String result);

}

更改您的代码,如下所示:

public String callGraphAPI(String url, Callback callback) {
    ...
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url,
            parameters,new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            /* Successfully called graph, process data and send to UI */
            Log.d(TAG, "Response: " + response.toString());

            //your result
            callback.onResult(response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error: " + error.toString());
        }
    }) {
        @Override
        public Map<String, String> getHeaders() {
            Map<String, String> headers = new HashMap<>();
            headers.put("Authorization", "Bearer " + mAuthResult.getAccessToken());
            return headers;
        }
    };