Попытка вызвать виртуальный метод int java.lang.String.length() для пустой ссылки на объект в Volley при выполнении Swiperefresh для Android

У меня эта ошибка java.lang.NullPointerException: Попытка вызвать виртуальный метод int java.lang.String.length() на нулевой ссылке на объект при выполнении onRefresh в Android. когда я получаю данные снаружи onRefresh метод это нормально.

вот мой запрос на залп

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);

а вот мой метод обновления

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

        getDataTicket(a,b,c);
    }

1 ответ

Решение
@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++) {
                                          ...
Другие вопросы по тегам