Polyline gets coordinate using VolleyCallBack interface, does not crash, but does not show up

In one of the 2 fragments currently composing the activity, I used Volley to get a list of coordinates gotten from GoogleApi on a MapFragment.

On the map, are apearing the markers from the user positions and the challenger's, but the destination markers are not drawn and the polyline as well. I can't find where is the NullPointerException from neither.

The app doesnt crash on running, and responds really well otherwise.

public class MapFragment extends Fragment implements OnMapReadyCallback, LocationListener,
    GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener {


private FirebaseUser firebaseUser  ;
private DatabaseReference fromUserRef ;

public static final int MY_PERMISSION_REQUEST_CODE = 7171 ;
private GoogleMap gMap ;
private FusedLocationProviderClient apiClient;
private GoogleApiClient mGoogleApiClient ;
private LocationRequest mLocationRequest;

private LatLng userLatlng ;

private  ArrayList<Places>barArrayList;
private ArrayList<Places>selectedBars  = new ArrayList<>() ;
private ParsingApi parsingApi ;

private double latitude , longitude;
@Override
public void onStart() {
    super.onStart();
    if(mGoogleApiClient == null){
        return;
    }
    mGoogleApiClient.connect();
}

@Override
public void onStop() {
    if(mGoogleApiClient != null){
        mGoogleApiClient.disconnect();
    }
    super.onStop();
}

@Override
public void onResume() {
    super.onResume();

}

public MapFragment() {
    // Required empty public constructor
}


@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

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

    apiClient = new FusedLocationProviderClient(getContext());
    firebaseUser = FirebaseAuth.getInstance().getCurrentUser() ;
    fromUserRef = FirebaseDatabase.getInstance().getReference(MainActivity.USERS);

    final ParsingApi api = new ParsingApi(getContext());
    barArrayList  =  new ArrayList<>();

    SupportMapFragment mapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map_fragment));  //use SuppoprtMapFragment for using in fragment instead of activity  MapFragment = activity   SupportMapFragment = fragment
    assert mapFragment != null;
    mapFragment.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(final GoogleMap mMap) {
            api.loadUrl(new VolleyCallBack(){
                @Override
                public void onSuccess(ArrayList<Places> places) {

                    barArrayList = places ;
                    gMap =mMap ;
                    setUserLocationMarker(gMap);
                    setChallengerMarkerLocaTion(gMap);
                    setPathToDestination(gMap,pickThreeBars(barArrayList));
                    setLocationMarker(gMap,selectedBars);
                    requestLocationUpdate();
                    gMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                    gMap.setMyLocationEnabled(true);
                    gMap.clear();
                    mLocationRequest = LocationRequest.create();
                    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY).setInterval(2000);
                    requestLocationUpdate();



                }

            });

        }
    });





    return v;
}

public static int getRandom ( int max){
    return  (int)(Math.random()*(max+1));

}


public ArrayList<Places>  pickThreeBars( ArrayList<Places>bars){

    int countOfBars = 0 ;
    while (countOfBars < 3){
        int random = getRandom(bars.size()-1);
        for (int i = 0; i <bars.size() ; i++) {
         if( i == random && !selectedBars.contains(bars.get(random))){
             selectedBars.add(bars.get(random));
             countOfBars ++ ;
         }

        }
    }
  return  selectedBars ;
}





private void setPathToDestination(final GoogleMap gMap, List<Places> list){


    PolylineOptions polyline1 = new PolylineOptions()
            .visible(true)
            .add(userLatlng, new LatLng(list.get(0).getLat(), list.get(0).getLng()))
            .add(new LatLng(list.get(0).getLat(), list.get(0).getLng()), new LatLng(list.get(1).getLat(), list.get(1).getLng()))
            .add(new LatLng(list.get(1).getLat(), list.get(1).getLng()), new LatLng(list.get(2).getLat(), list.get(2).getLng()))
            .width(5)
            .jointType(JointType.DEFAULT)
            .color(Color.BLUE);

            gMap.addPolyline(polyline1);


}


private void setLocationMarker(GoogleMap gMap ,ArrayList<Places>locationMarkerList){

    for (Places places : locationMarkerList){
        gMap.addMarker(new MarkerOptions()
                .position(new LatLng(places.getLat(),places.getLng())).title(places.getName()).icon(
                        BitmapDescriptorFactory.fromResource(R.drawable.ic_local_bar)));
    }
}


private void setUserLocationMarker(final GoogleMap gMap){

    fromUserRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            User user =  dataSnapshot.getValue(User.class) ;


            if(user.getId().equalsIgnoreCase(firebaseUser.getUid())){
                String lattitude, longitude ;
                lattitude = user.getLatitude() ;
                longitude = user.getLongitude() ;



                userLatlng = new LatLng(Double.parseDouble(lattitude),Double.parseDouble(longitude));

                gMap.addMarker(new MarkerOptions()
                        .position(userLatlng)
                        .title("Your position"));

                gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLatlng, 16));
            }


        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });




}


private void setChallengerMarkerLocaTion(final GoogleMap gMap){


    fromUserRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            User user = dataSnapshot.getValue(User.class) ;


            if(user.getId().equalsIgnoreCase(ActivityChallengeOne.OTHERUSER)){
                Double latitude, longitude ;
                latitude =  Double.parseDouble(user.getLatitude());
                longitude = Double.parseDouble(user.getLongitude());

                LatLng challengerLatLng = new LatLng(latitude,longitude);

                gMap.addMarker(new MarkerOptions()
                        .position(challengerLatLng)
                        .title("Challenger's position"));
            }

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });



}


private void requestLocationUpdate(){

    if(!PermissionUtils.checkLocationPermission(getContext())){
        PermissionUtils.requestLocationPermission(getActivity(),MY_PERMISSION_REQUEST_CODE);
        return;
    }

     mLocationRequest = new LocationRequest();
    // priority will influence the use of the gps and thhe battery, the more accurate it is
    // the more the demand in power will be great
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            // turn it on every 5 seconds
            .setInterval(1000*5)
            // if you already have the location update ever 0.5s
            .setFastestInterval(500);

    // if we want a definer number of updates
    //request.setNumUpdates(0);

    apiClient.requestLocationUpdates(mLocationRequest,locationCallback ,null);
    //  null => looper :  get the result on the main thread
}



LocationCallback locationCallback = new LocationCallback(){
    @Override
    public void onLocationResult(LocationResult locationResult) {
        super.onLocationResult(locationResult);
        if( locationResult == null) return;

        Location location = locationResult.getLastLocation();
       latitude =  location.getLatitude();
       longitude = location.getLongitude();

        //findAdressbyLocation(new LatLng(latitude, longitude));
    }
};
@Override
public void onLocationChanged(Location location) {

    double latitude =location.getLatitude() ;
    double longitude =  location.getLongitude() ;
    gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude,longitude),20));
    gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude,longitude), 15));

}




@Override
public void onConnected(@Nullable Bundle bundle) {


}



@Override
public void onConnectionSuspended(int i) {
    mGoogleApiClient.connect();

}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if(requestCode ==  MY_PERMISSION_REQUEST_CODE  && grantResults[0] == PackageManager.PERMISSION_GRANTED){
        requestLocationUpdate();
    }
}

@Override
public void onMapReady(GoogleMap googleMap) {

}

}

and here is the running log since the logcat has no error showing up

W/System.err: java.lang.NullPointerException: Attempt to read from field 'double com.google.android.gms.maps.model.LatLng.b' on a null object reference
        at com.google.maps.api.android.lib6.impl.model.f.<init>(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):5)
        at com.google.maps.api.android.lib6.gmm6.api.s.h(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):69)
        at com.google.maps.api.android.lib6.gmm6.api.s.<init>(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):8)
        at com.google.maps.api.android.lib6.gmm6.api.p.a(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):23)
        at com.google.maps.api.android.lib6.impl.bm.a(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):91)
W/System.err:     at com.google.android.gms.maps.internal.j.a(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):316)
        at cl.onTransact(:com.google.android.gms.dynamite_mapsdynamite@19629084@19.6.29 (120700-0):5)
        at android.os.Binder.transact(Binder.java:914)
        at com.google.android.gms.internal.maps.zza.zza(Unknown Source:10)
W/System.err:     at com.google.android.gms.maps.internal.zzg.addPolyline(Unknown Source:42)
        at com.google.android.gms.maps.GoogleMap.addPolyline(Unknown Source:39)
        at com.rubenmimoun.beerchallenge.FragmentAcvities.MapFragment.setPathToDestination(MapFragment.java:198)
        at com.rubenmimoun.beerchallenge.FragmentAcvities.MapFragment.access$400(MapFragment.java:54)
W/System.err:     at com.rubenmimoun.beerchallenge.FragmentAcvities.MapFragment$1$1.onSuccess(MapFragment.java:134)
        at com.rubenmimoun.beerchallenge.Notification.ParsingApi$1.onResponse(ParsingApi.java:144)
        at com.rubenmimoun.beerchallenge.Notification.ParsingApi$1.onResponse(ParsingApi.java:116)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:78)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
W/System.err:     at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7319)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:4
    Selected remote version of com.google.android.gms.googlecertificates, version >= 4
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
    Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/n.beerchalleng: Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)

**EDIT : **

Because the onMapReady method contains the VolleyCallBack, I had to retrieve the coordinates from inside the on ChildAdded() from the ChildEventListener in the Overidden onSuccess().

I then added a parameter LatLng userLoc inside the ChildAdded() method the setPathToDestination() method will user as the users Locs