我再次访问活动时没有凌空响应

时间:2015-08-28 07:14:59

标签: android json android-volley

我有一个主页面,我使用Volley从服务器获取一堆项目,然后我将它们加载到屏幕上。如果我点击一个项目,它应该带我到项目页面显示我使用Volley再次从服务器获取的详细信息。后者(获取单个项目页面上单个项目的详细信息)仅适用一次。

因此,例如,如果我第一次访问项目页面,Volley会得到响应,因此我可以将数据加载到屏幕上。但是,如果我按回或只是返回主页并选择另一个项目,Volley无法给出任何回复,因此项目页面为空。每次访问“项目”页面时,如何制作Volley发送请求并获得响应?或者至少告诉我为什么它只是第一次工作?

我的单身课

public class MyApplication extends Application {

    private RequestQueue mRequestQueue;
    private static MyApplication mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized MyApplication getInstance() {
        return mInstance;
    }

    public RequestQueue getReqQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToReqQueue(Request<T> req, String tag) {

        getReqQueue().add(req);
    }

    public <T> void addToReqQueue(Request<T> req) {

        getReqQueue().add(req);
    }

    public void cancelPendingReq(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }

}

我如何在Item Page,我的ReadDataFromDB()方法...

上发出请求并处理响应
private void ReadDataFromDB() {
        JsonObjectRequest jreq = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            int success = response.getInt(TAG_SUCCESS);

                            if (success == 1) {

                            //parse JSON
                                JSONObject productJSONObject = response.getJSONObject(TAG_PRODUCTS);
                                 product = new ProdItem (productJSONObject.getString(TAG_PRODUCT_PICTURE), productJSONObject.getString(TAG_PRODUCT_TITLE), productJSONObject.getString(TAG_PRODUCTS_DESCRIPTION),
                                        productJSONObject.getString(TAG_PRODUCTS_DATETIME), productJSONObject.getDouble(TAG_PRODUCTS_RATING),
                                        productJSONObject.getDouble(TAG_PRODUCTS_PRICE), productJSONObject.getInt(TAG_PRODUCT_ID), productJSONObject.getInt(TAG_CAT_ID), productJSONObject.getInt(TAG_PRODUCTS_VIEWS),
                                        productJSONObject.getInt(TAG_PRODUCTS_SHOPID), productJSONObject.getInt(TAG_PRODUCT_POINTS), 1, productJSONObject.getString(TAG_PRODUCTS_SHOPNAME));

                            } // if ends

                            //update UI
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    adTitleLBL.setText(product.getProdTitle());
                                    shopNameLBL.setText(product.getShopName());
                                    prodDescriptionLBL.setText(product.getProdDescription());
                                    shopIDLBL.setText(String.valueOf(product.getProdShopID()));
                                    catIDLBL.setText(String.valueOf(product.getMasterCatID()));
                                    prdoIDLBL.setText(String.valueOf(product.getProdID()));

                                    adRating.setRating((float) product.getProdRating());
                                    loadAdImage(product.getProdImage());
                                }
                            });

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), "Server is terrible", Toast.LENGTH_SHORT).show();
                error.printStackTrace();
            }
        });

        //add request to queue
        MyApplication.getInstance().addToReqQueue(jreq);

    }

我在这里检查了其他问题,但它们不是我想要的。我可能错误地使用Volley,只需要知道我缺少什么或者是什么。

0 个答案:

没有答案