MapFragment or MapView getMap() returns null on Lollipop
Solution 1
I had exactly the same problem but this is what worked for me:
Replace this...
GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
with this...
GoogleMap map = getMapFragment().getMap();
then slip this bad boy in and give it a whirl...
private MapFragment getMapFragment() {
FragmentManager fm = null;
Log.d(TAG, "sdk: " + Build.VERSION.SDK_INT);
Log.d(TAG, "release: " + Build.VERSION.RELEASE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
Log.d(TAG, "using getFragmentManager");
fm = getFragmentManager();
} else {
Log.d(TAG, "using getChildFragmentManager");
fm = getChildFragmentManager();
}
return (MapFragment) fm.findFragmentById(R.id.map);
}
Solution 2
Google now made a more convenient way to get the map using the following method
myMapFragment.getMapAsync(new OnMapReadyCallback) {
@Override
public void onMapReady(GoogleMap googleMap) {
myMap = googleMap;
}
});
Solution 3
It looks like this might be an issue with a targetSdkVersion of 21: https://code.google.com/p/android-developer-preview/issues/detail?id=1947
However, switching to getChildFragmentManager() worked for me:
findFragmentById for SupportMapFragment returns null in Android Studio
Solution 4
Have you tried isGooglePlayServicesAvailable to check why its returning null? null has many reasons on getmap, try using this to check why its giving null
mroczis
Updated on July 05, 2022Comments
-
mroczis almost 2 years
I've been using Google Maps API v2 for a long time on Android 4.x versions without a problem. Now I installed latest Lollipop build on my Nexus devices (5 and 7) trying to materialize the app.
I'd like to point out that everything is ok on KitKiat and the problem I'm describing is poping up only on Lollipop.
In my XML source code I'm using MapFragment (Google Play Services library version 6.1.11).
<fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/>
In Java code I'm overriding OnPause() method to reach map:
GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
At this line it throws NullPointerException. In debugger app is able to find fragment, however it's not able to return GoogleMap. I've also tried to use MapView. It also throws null. The weirdest thing for me is that map loads without a problem on app itself but in code I cant reach it to work with it.
-
mroczis over 9 yearsYes, I did. Finally I solved my problem by reimplementing MapView. MapFragment does not seem to work at all.
-
itsmewajid over 9 years@mroczis Can u just describe me how did u fix it?
-
mroczis over 9 yearsI used MapView after all, set up it's lifecycle (calling mMapView.onCreate() on onCreate() method of activity, mMapView.onPause() on activity's onPause() etc.) and it did work. MapFragment does seem to not attach to FragmentManager on Lollipop.
-
Kartik Sharma over 9 yearsThanks a lot. Finally this did the job for me.
-
Jay Sidri over 9 yearsIs this a known issue on Lollipop?
-
edgarmiro over 9 yearsPerfect answer. Thanks!
-
BoD about 9 yearsThis was the correct answer in my case. The accepted answer seems to assume that the MapFragment is null, which is not the case according to the question (in the question the MapFragment is not null, but the returned value of getMap() is null).
-
Deep Singh almost 9 years@Rhisiart thanks for your answer .i want to know one more thing .after using this code ..how we will handle on backstack with this fragment in navigation drawer ...bcz after using this code onbackstack is not working with this fragment.
-
Rhisiart almost 9 years@DeepSingh without more detail, all I can tell you is that my fragment extends com.google.android.gms.maps.MapFragment and is hosted within an android.support.v13.app.FragmentTabHost along with 2 other android.widget.TabHost$TabSpec's in an android.app.Activity targeting android:targetSdkVersion="22. You can see it in action within this app (select either 'Find nature events' or 'Find events' from the navigation drawer) - play.google.com/store/apps/…
-
Shubham Chaudhary almost 9 yearsI wish I could +1 multiple times on this answer
-
Frildoren over 8 yearsI'm trying to implement this solution but it says getChildFragmentManager is undefined. Im inside an Activity. Someone hlp me please?
-
Ramachandra Reddy Avula almost 8 yearsDude, you saved my time. Thanks alot