Java 如何在响应时获取返回值

Java 如何在响应时获取返回值,java,android,Java,Android,我知道这是答案,但我无法将其添加到我的代码中 您可以通过使用接口来实现这一点。按照以下步骤操作 首先在应用程序中创建接口,如 public interface AsyncTaskListener { void onRequestCompleted(JSONObject result, Integer statusCode); } 并在您想要发出请求的活动中实现这个接口,假设您的volley类的对象是objVolley,那个么您的请求如下所示 public class Your

我知道这是答案,但我无法将其添加到我的代码中


您可以通过使用接口来实现这一点。按照以下步骤操作

首先在应用程序中创建接口,如

public interface AsyncTaskListener {
    void onRequestCompleted(JSONObject result, Integer statusCode);
}
并在您想要发出请求的活动中实现这个接口,假设您的volley类的对象是objVolley,那个么您的请求如下所示

    public class YourActivity extends AppCompatActivity implements AsyncTaskListener {
        public void priceDate(YourActivity.this, coin, YourActivity.this);
    }
然后你的截击课和方法是这样的

    public class PostDataHelper {
        public void priceDate(Context contex, final String coin, final AsyncTaskListener asyncTaskListener) {
@Override
        public void onResponse(JSONObject response) {
               asyncTaskListener.onRequestCompleted(response, 200);
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
             asyncTaskListener.onRequestCompleted(response, 200);
        }
    });
      }
    }

希望这对您有所帮助,快乐编码。

您的截击代码嵌入到您的活动代码中,因此创建界面没有太大优势

您需要创建一个单独的类来处理截击请求

public class VolleyRequest {
    VolleyCallback mResultCallback;
    RequestQueue mRequestQueue;

    public VolleyRequest(VolleyCallback resultCallback, Context context){
        mResultCallback = resultCallback;
        mRequestQueue = Volley.newRequestQueue(context);
    }

    public void cancelRequests(String TAG){
        if(mRequestQueue != null){
            mRequestQueue.cancelAll(TAG);
        }
    }

    public void volleyGetRequest(String url, final String TAG) {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
                url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                if (mResultCallback != null) {
                    mResultCallback.onSuccess(response, TAG);
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (mResultCallback != null) {
                    mResultCallback.onError(error, TAG);
                }
            }
        });
        jsonObjectRequest.setTag(TAG);
        mRequestQueue.add(jsonObjectRequest);
    }
}
然后在你的活动课上

private void initvolley(){
        VolleyCallback volleyCallback = new VolleyCallback() {
            @Override
            public void onSuccess(JSONObject response, String tag) {
                switch (tag){
                    //add response handling code here
                }
            }

            @Override
            public void onError(VolleyError error, String tag) {
                //handle error response here
            }
        };
        VolleyRequest volleyRequest = new VolleyRequest(volleyCallback, this);
        String URL = "https://min-api.cryptocompare.com/data/top/exchanges/full?fsym=BTC&tsym=USD&api_key=" + apiKey;
        volleyRequest.volleyGetRequest(URL, request_tag/*Request tag incase you have multiple requests in same activity*/);
    }
public interface VolleyCallback {
    void onSuccess(JSONObject response, String tag);
    void onError(VolleyError error, String tag);
}
private void initvolley(){
        VolleyCallback volleyCallback = new VolleyCallback() {
            @Override
            public void onSuccess(JSONObject response, String tag) {
                switch (tag){
                    //add response handling code here
                }
            }

            @Override
            public void onError(VolleyError error, String tag) {
                //handle error response here
            }
        };
        VolleyRequest volleyRequest = new VolleyRequest(volleyCallback, this);
        String URL = "https://min-api.cryptocompare.com/data/top/exchanges/full?fsym=BTC&tsym=USD&api_key=" + apiKey;
        volleyRequest.volleyGetRequest(URL, request_tag/*Request tag incase you have multiple requests in same activity*/);
    }