如何在android中为截击库创建公共类

如何在android中为截击库创建公共类,android,android-activity,Android,Android Activity,我想为volley库创建一个基类,并想访问调用volley请求的活动上的响应和错误。因此,我的代码将进行优化。我个人使用以下类来处理volley。您可以根据需要还原它 截击请求队列帮助程序: public class VolleyHelper { private static final String TAG = VolleyHelper.class .getSimpleName(); private RequestQueue mRequestQueu

我想为volley库创建一个基类,并想访问调用volley请求的活动上的响应和错误。因此,我的代码将进行优化。

我个人使用以下类来处理volley。您可以根据需要还原它

截击请求队列帮助程序:

public class VolleyHelper {

    private static final String TAG = VolleyHelper.class
            .getSimpleName();

    private RequestQueue mRequestQueue;
    private static VolleyHelper mInstance;

    public VolleyHelper (Context context) {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(context);
        }
    }

    public static synchronized VolleyHelper getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new VolleyHelper(context);
        }
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        // set the default tag if tag is empty
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}
截击反应助手

public class VolleyResponseHelper {
    /**
     * Returns appropriate message which is to be displayed to the user
     * against the specified response .
     *
     * @param code
     * @param context
     * @return
     */
     /* 0 - Request from registration */
    /* 1 - Request from login */
    /* 2 - Request from New post */
    public static String getMessage(String code, int from, Context context) {
        int mCode = Integer.parseInt(code);
        String message = null;
        switch (mCode) {
            case 409:
                if (from == 1 || from == 0) {
                    message = context.getResources().getString(R.string.user_exists);
                }
                return message;
            case 200:
                if (from == 1 || from == 0) {
                    message = context.getResources().getString(R.string.success);
                } else if (from == 2) {
                    message = context.getResources().getString(R.string.np_done);
                }
                return message;
            case 401:
                if (from == 1) {
                    message = context.getResources().getString(R.string.user_not_exists);
                }
                return message;

            default:
                return context.getResources().getString(R.string.generic_error);
        }

    }


}
内线截击反应

为了更清楚地了解用法,我已经发布了我的代码,并按照您的要求将其还原

 private void getDetails(Map<String, String> params) {
        SalonJsonObjReq arrayReq = new SalonJsonObjReq(Request.Method.POST, Constants.SALON_DETAILS, new JSONObject(params), new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                populate(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                hideProgressDialog();
                String errorString = VolleyErrorHelper.getMessage(error, DetailsScreen.this);
                if (errorString != null) {
                    Util.showAlert(DetailsScreen.this, getResources().getString(R.string.error), errorString);
                }
            }
        }, null);
        showProgressDialog(getResources().getString(R.string.loading));
        VolleyHelper.getInstance(getApplicationContext()).addToRequestQueue(arrayReq);

    }
ResponseHelper也可用于此方式。应用您的逻辑:


查看更多信息。

我在Util应用程序文件夹中使用截击服务,如下所示:

public class VolleyService {

    private static VolleyService instance;
    private RequestQueue requestQueue;
    private ImageLoader imageLoader;

    private VolleyService(Context context) {
        requestQueue = Volley.newRequestQueue(context);

        imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
            private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20);

            @Override
            public Bitmap getBitmap(String url) {
                return cache.get(url);
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {
                cache.put(url,bitmap);
            }
        });
    }

    public static VolleyService getInstance(Context context) {
        if (instance == null) {
            instance = new VolleyService(context);
        }
        return instance;
    }

    public RequestQueue getRequestQueue() {
        return requestQueue;
    }

    public ImageLoader getImageLoader() {
        return imageLoader;
    }
}
或创建请求:

RequestQueue queue = VolleyService.getInstance(this.getContext()).getRequestQueue();
StringRequest request = new StringRequest(url, new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    // we got the response, now our job is to handle it
                    try {
                        updateArticleData(response, syncResult,categoryID);
                    } catch (RemoteException | OperationApplicationException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    //something happened, treat the error.
                    Log.e("Error", error.toString());
                }
            });

            queue.add(request);

什么是SalonJsonObjReq?这是我的自定义请求类。你需要创建自己的类。你曾经报道过截击图坦卡娅吗?我已经讲过基本的东西了。现在说说你的疑问是什么?IMO,请阅读以下链接并
public class VolleyService {

    private static VolleyService instance;
    private RequestQueue requestQueue;
    private ImageLoader imageLoader;

    private VolleyService(Context context) {
        requestQueue = Volley.newRequestQueue(context);

        imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
            private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20);

            @Override
            public Bitmap getBitmap(String url) {
                return cache.get(url);
            }

            @Override
            public void putBitmap(String url, Bitmap bitmap) {
                cache.put(url,bitmap);
            }
        });
    }

    public static VolleyService getInstance(Context context) {
        if (instance == null) {
            instance = new VolleyService(context);
        }
        return instance;
    }

    public RequestQueue getRequestQueue() {
        return requestQueue;
    }

    public ImageLoader getImageLoader() {
        return imageLoader;
    }
}
VolleyService.getInstance(context)
RequestQueue queue = VolleyService.getInstance(this.getContext()).getRequestQueue();
StringRequest request = new StringRequest(url, new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    // we got the response, now our job is to handle it
                    try {
                        updateArticleData(response, syncResult,categoryID);
                    } catch (RemoteException | OperationApplicationException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    //something happened, treat the error.
                    Log.e("Error", error.toString());
                }
            });

            queue.add(request);