我有一个主页面,我使用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,只需要知道我缺少什么或者是什么。