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*/);
}