Mapfragment findFragmentById always null
Solution 1
use this way:
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
map = mapFrag.getMap();
here is full code with sample:
Solution 2
In case your problem is not solved, try this :
As you are using SupportMapFragment
, while retrieving map, use
GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
Also, change
public class Mapa extends Activity {
to
public class Mapa extends FragmentActivity {
Solution 3
I had a similar problem when trying to get MapFragment but getting null because the device didn't have Google Play Services updated.
Solution 4
Change in the layout
android:name = "com.google.android.gms.maps.SupportMapFragment"
by
android:name = "com.google.android.gms.maps.MapFragment"
.
Or, you can use getSupportFragmentManager()
instead of getFragmentManager()
.
user1852854
Updated on June 18, 2022Comments
-
user1852854 almost 2 years
I have problems to access the fragment of the map. getFragmentManager().findFragmentById(R.id.map)) returns always null. I don't know why. What's the problem?
Thank you!
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tvNombreCentro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:tag="tag_fragment_map" /> </LinearLayout>
And in the activity after the setContentView I try to access to the map, but I receive an exception
public class Mapa extends Activity { private GoogleMap mMap; private ActionBar ab; private TextView tvNombreCentro; private TextView tvTelefonoValor; private TextView tvEMailValor; private TextView tvWebValor; private TextView tvDireccionValor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapa_centro); GoogleMap mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); }
-
user1852854 almost 11 yearssorry for the delay. The answer is correct but I don't need to change the extends, only getSupportFragmentManager. Thank you!
-
Aryo almost 10 yearsAs a note, if you use Android support library to display a map, please make sure that your layout xml file that contains the map fragment should have an android:name attribute value to
com.google.android.gms.maps.SupportMapFragment
rather thancom.google.android.gms.maps.MapFragment
, otherwise it won't work and keep returningnull
-
mr_ivan777 over 8 yearsExcellent! it helps me!.