2017-03-10 5 views
-3

Je rencontre cette erreur java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle int java.lang.String.length() sur une référence d'objet null lors de l'exécution le onRefresh dans Android. quand je récupère des données en dehors de la méthode onRefresh, ça va.Tentative d'invocation de la méthode virtuelle 'int java.lang.String.length()' sur une référence d'objet null sur Volley lors de l'exécution de Swiperefresh Android

Voici ma demande Volley

final String ticketUrl = "http"; 
 
     StringRequest getTicket = new StringRequest(Request.Method.POST, ticketUrl, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 
         try { 
 
          JSONObject ticketObj = new JSONObject(response); 
 
          JSONArray ticketArray = ticketObj.getJSONArray("a"); 
 
          for (int i = 0 ; i < ticketArray.length() ; i++){ 
 
           ViewTicketModel ticket_object = new ViewTicketModel(); 
 
           JSONObject ticketVal = ticketArray.getJSONObject(i); 
 
           String diagnosa = ticketVal.getString("first"); 
 
           String noPasien = ticketVal.getString("second"); 
 
           String dokter = ticketVal.getString("3rd"); 
 
           String jenisPerawatan = ticketVal.getString("4th"); 
 

 
           ticket_object.setJenis_perawatan(jenisPerawatan); 
 
           ticket_object.setNomor_pasien(noPasien); 
 
           ticket_object.setDoctor(dokter); 
 

 
           ticket_list_mdl.add(ticket_object); 
 
           adapter.notifyDataSetChanged(); 
 
           // stopping swipe refresh 
 
           swipeRefreshView.setRefreshing(false); 
 
          } 
 

 
         } catch (JSONException e) { 
 
          e.printStackTrace(); 
 
         } 
 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Log.v("V_error",error.toString()); 
 
       // stopping swipe refresh 
 
//    swipeRefreshView.setRefreshing(false); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put("a", token); 
 
       params.put("b", signature); 
 
       params.put("c", pvd_code); 
 
       return params; 
 
      } 
 
     }; 
 

 
     RequestQueue ticketQueue = Volley.newRequestQueue(ViewTickets.this); 
 
     ticketQueue.add(getTicket);

et voici ma méthode de rafraîchissement sur

@Override 
 
    public void onRefresh() { 
 
     ViewTicketModel ticketModel = new ViewTicketModel(); 
 
     String a = ticketModel.getmToken(); 
 
     String b = ticketModel.getmSignature(); 
 
     String c = ticketModel.getmPvdCode(); 
 

 
     getDataTicket(a,b,c); 
 
    }

Répondre

0
@Override 
public void onResponse(String response) { 
    try { 
     JSONObject ticketObj = new JSONObject(response); 
     JSONArray ticketArray = ticketObj.getJSONArray("a"); 
     if (ticketArray != null) 
      for (int i = 0; i < ticketArray.length(); i++) { 
              ... 
+1

oh je vois, ma mauvaise je n'ai pas remarqué que, après je l'ai appelé, la longueur n'est pas réinitialisée à nouveau. –