I have a gps app that works fine on my phone. However, I see there were people having a null pointer exception in the production.
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
// Getting GoogleMap object from the fragment
googleMap = fm.getMap();
// Enabling MyLocation Layer of Google Map
googleMap.setMyLocationEnabled(true);
googleMap.setPadding(0, 0, 0, 90);
The error I'm getting from production is Caused by:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)' on a null object reference
So I did some research and find out that getMap method has been removed and people recommend using getMapAsync(this);
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap; //which doesn't seem to work
}
However, I'm referencing the googleMap
variable in many different methods, and I cannot move all the code to onMapReady
method. I tried using this.googleMap = googleMap
inside the onMapReady
method, but I'm still getting null pointer exceptions whenever I try to reference the googleMap
variable. I defined the getMapAsync(this) in onCreated(), and then try to access the 'googleMap' object in onResume() and getting the null pointer exception. Is there a way to fix this? Thank you.
You are getting null pointer exception because you are trying to use google map object but google map object is still null,so you need to follow this step. write this code in onCreate() method
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
now impleents your class with public class Demo implements OnMapReadyCallback
in short you need to override onMapReady(Googlemap googleMap) methood.
you can perform all action after callback from onMapReady().
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Enabling MyLocation Layer of Google Map
googleMap.setMyLocationEnabled(true);
}