-1

i have view pager defined in my app and i am trying to load images in view pager using volley library. I am doing as follows :

First, i am posting request to the server if response comes True, then i am sending another request in response method to fetch images from the server.

Here is the Error i am getting in log window:

  java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference
    at tiffino.app.com.Home.loadDiscViewPager(Home.java:492)
    at tiffino.app.com.Home$1.onResponse(Home.java:302)
    at tiffino.app.com.Home$1.onResponse(Home.java:290)
    at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
    at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
    at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

Here is the code i am using:

OfferImageModel.java

 public class OfferImageModel {

String Image;

public OfferImageModel(){


}

public OfferImageModel(String image) {
    Image = image;
}

public String getImage() {
    return Image;
}

public void setImage(String image) {
    Image = image;
  }
  }

Home.java

public class Home extends Fragment{

String str1 = "Ajmer";
ViewPager discImages;
RequestQueue requestQueue, discQueue;
StringRequest stringRequest, discRequest;
private static final String URL = "https://tiffino.herokuapp.com/fetch";
private static final String OFFER_URL = "https://tiffino.herokuapp.com/offers";

List<OfferImageModel> offers;
DiscViewPager adapter;

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_home, container, false);

    discImages = view.findViewById(R.id.discImages);

    offers = new ArrayList<>();

    sendLocation(str1);

   return view;

   }

   private void sendLocation(final String str1) {

    requestQueue = Volley.newRequestQueue(getActivity());

    stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {

              if (response.equals("True")) {

                    loadDiscViewPager();
                }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            HashMap<String, String> map = new HashMap<>();
            map.put("name", str1);

            return map;
        }
    };

    requestQueue.add(stringRequest);
}

   public void loadDiscViewPager() {

   discRequest = new StringRequest(Request.Method.POST, OFFER_URL, new Response.Listener<String>() {

               @Override
               public void onResponse(String response) {

                   try {
                       JSONArray jsonArray = new JSONArray(response);

                       for (int i = 0; i < jsonArray.length(); i++) {

                           OfferImageModel model = new OfferImageModel();

                           JSONObject jsonObject = jsonArray.getJSONObject(i);

                           String loadImages = jsonObject.getString("Image");

                           model.setImage(loadImages);

                           offers.add(model);
                       }

                       adapter = new DiscViewPager(getActivity(), offers);

                       discImages.setAdapter(adapter);

                   } catch (JSONException e) {
                       e.printStackTrace();
                   }
               }
           }, new Response.ErrorListener()

           {
               @Override
               public void onErrorResponse(VolleyError error) {


               }
           })

           {

               @Override
               protected Map<String, String> getParams() throws AuthFailureError {

                   HashMap<String, String> params = new HashMap<>();
                   params.put("Place",str1);

                   return params;
               }
           };

   discQueue.add(discRequest);

 }

}

DiscViewPager.java

    public class DiscViewPager extends PagerAdapter {

private LayoutInflater layoutInflater;
Context context;
private List<OfferImageModel> offers;

public DiscViewPager(Context context, List<OfferImageModel> offers) {
    this.context = context;
    this.offers = offers;
}

@Override
public int getCount() {
    return offers.size();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return (view == o);
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {

    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    assert layoutInflater != null;
    View view = layoutInflater.inflate(R.layout.custom_offer, null);

    ImageView offerImage = view.findViewById(R.id.offerImage);

    OfferImageModel model = offers.get(position);

    Picasso.with(context).load(model.getImage()).fit().centerInside().into(offerImage);


    ViewPager vp = (ViewPager) container;
    vp.addView(view, 0);


    return view;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

    ViewPager vp = (ViewPager) container;
    View view = (View) object;
    vp.removeView(view);
}
}

Please let me know what i am doing wrong in above code.
THANKS

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Digvijay
  • 2,887
  • 3
  • 36
  • 86

1 Answers1

0

You don't seem to be initializing discQueue anywhere, thus the null pointer exception

Basil
  • 845
  • 9
  • 24