0

J'utilise une requête JsonObject dans onActivityCreated de mon fragment. J'ajoute la requête jsonobject à une file d'attente de requêtes. La file d'attente n'est pas exécutée du tout. J'ai mis l'instruction Log dans Onresponse et Onerrorresponse. C'est comme si la requête n'était pas lancée du tout. Voici mon code. S'il vous plaît suggérer si je fais quelque chose de mal. J'ai besoin de passer une chaîne au serveur. Donc, je le mets dans un jlistobject jlistname. Le serveur renverra un jsonobject, afin de le recevoir im en utilisant jsonobjectrequest au lieu de stringrequest.JsonObjectrequest n'est pas exécuté après avoir été mis en file d'attente

RequestQueue rq; 
JsonObjectRequest jsObjRequest; 
JSONObject jlistname = new JSONObject(); 
String listname="list1"; 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    searchitembtn=(ImageButton) getView().findViewById(R.id.searchitembtn); 
    rq = Volley.newRequestQueue(getActivity()); 
    try { 
     jlistname.put("listname", listname); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    jsObjRequest = new JsonObjectRequest(Request.Method.POST, getlistitems, null, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        Log.i(TAG, "im in onresponse" + response); 
        System.out.println(response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.i(TAG, "im in onerrorresponse" + error); 
       } 
      }) { 
     @Override 
     public byte[] getBody() { 
      return jlistname.toString().getBytes(); 
     } 

     @Override 
     public String getBodyContentType() { 
      return "application/json"; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> headers = new HashMap<String, String>(); 
      headers.put("Accept", "application/json"); 
      return headers; 
     } 
    }; 


    if (listtype==100||listtype==101){ 
     ----------------------- 
     } 
    else if(listtype==102){ 
     Log.i(TAG,"mylisttypeis102: "+listtype); 
     Log.i(TAG,"im before adding o request queue"+jsObjRequest); 
     rq.add(jsObjRequest); 
     Log.i(TAG, "im after adding o request queue"+rq); 
    } 
    else { 
     ------------------- 
     } 

    } 
    showLists(); 

} 

MISE À JOUR: J'ai ajouté un bouton à la mise en page et dans la onclicklistener du bouton maintenu rq.add (jsObjRequest);

Ensuite, je reçois la réponse correctement.

Mais je ne veux vraiment pas la réponse sur le clic. Je veux que la réponse soit générée lorsque le fragment est chargé selon mon code dans onActivityCreated. Est-ce que quelqu'un peut expliquer pourquoi j'obtiens une réponse en utilisant seulement un auditeur?

+0

Vérifiez 'la valeur de listtype' s'il vous plaît – BNK

+0

Salut @BNK oui le type de liste est 102. Les trois déclarations de journal au sein de l'autre si la condition OBTIENNENT imprimé. – user6005433

+0

Toute autre information de logcat disponible ou non? – BNK

Répondre

0

Ajouter la demande à la RequestQueue

rq.add(jsonObject); 
+0

Je l'ai fait dans l'autre si partie: else if (listtype == 102) { Log.i (TAG, "mylisttypeis102: "+ listtype"; Log.i (TAG, "im avant d'ajouter une file d'attente de requêtes" + jsObjRequest); rq.add (jsObjRequest); Log.i (TAG, "im après l'ajout de la file d'attente de requêtes" + rq); } – user6005433

+0

Vérifiez que l'entrée listvalue – bGorle

+0

J'ajoute la demande à la file d'attente de requêtes dans la partie elseif. – user6005433