Skip to content

I have an error in android studio with Bundle and ArrayList

This is my code in a fragment.


Bundle b= new Bundle();


public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);

    adapter= new PlatformAdapter(data);
    recyclerView.setLayoutManager( new LinearLayoutManager(getContext()));

            .doGetRequest("http://www...... .json", new RequestVolley.OnCompleteCallback() {
                public void onCompleted(String response) {

                    try {
                        JSONArray jsonArray = new JSONArray(response);
                        for(int i=0;i<jsonArray.length();i++){
                            JSONObject object= jsonArray.optJSONObject(i);


                    }catch(JSONException e){
    b.putSerializable("ListPlatforms", (Serializable) data);

then, I try to do this, in another fragment: ”’


public void onLocationChanged(@NonNull Location location) {

    if (googleMap != null) {

        if (myMarker == null) {

            MarkerOptions options = new MarkerOptions();
            options.title("My location");
            options.position(new LatLng(location.getLatitude(), location.getLongitude()));
            myMarker = googleMap.addMarker(options);
            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 10f));
        } else {
            myMarker.setPosition(new LatLng(location.getLatitude(), location.getLongitude()));

        Bundle b=new Bundle ();
        ArrayList<Platform> platforms= (ArrayList<Platform>) b.getSerializable("ListPlatforms");

        for(Platform platform:platforms) {

            double latitudine = platform.getClatitudine__wgs84__();
            double longitudine = platform.getClongitudine__wgs_84__();

            double distance = getDistanceinKm(latitudine, longitudine, location.getLatitude(), location.getLongitude());

            if (distance >=0.0) {
                MarkerOptions options = new MarkerOptions();
                options.position(new LatLng(latitudine, longitudine));
                myMarker = googleMap.addMarker(options);


} ”’ But I have java.lang.NullPointerException: Attempt to invoke virtual method ‘java.util.Iterator java.util.ArrayList.iterator()’ on a null object reference error when I try to do” for(Platform platform:platforms)”.. platforms in null. .. why??


  • since you didn’t share how do you navigate between fragments I will assume you’re using Navigation graph with actions.

  • so if we assume that this is your code navigate from fragment A to B

                .navigate(; //navigate from FragA to FragB action
  • then you should pass the bundle that you used b.putSerializable("ListPlatforms", (Serializable) data); on from the first fragment as a second parameter in the navigation code like this (notice I’m now including b as a second parameter to the method):
                .navigate(,b); //navigate from FragA to FragB action
  • then in the second fragment you should be getting this b bundle using the getArguments() method which could be called from anyplace in a fragment.
Bundle FragA_b = getArguments();
ArrayList<Platform> platforms= (ArrayList<Platform>) FragA_b.getSerializable("ListPlatforms");

N.B : don’t get confused with the savedInstanceState bundle that gets sent as a parameter in OnCreate,onViewCreated,onStateRestored and onSaveState life cycle fragments methods, these savedInstanceState bundle has nothing to do with the one that you send during navigation and get using getArguments() method.