Mapfragment findFragmentById always null

18,541

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().

Share:
18,541
user1852854
Author by

user1852854

Updated on June 18, 2022

Comments

  • user1852854
    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
    user1852854 almost 11 years
    sorry for the delay. The answer is correct but I don't need to change the extends, only getSupportFragmentManager. Thank you!
  • Aryo
    Aryo almost 10 years
    As 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 than com.google.android.gms.maps.MapFragment, otherwise it won't work and keep returning null
  • mr_ivan777
    mr_ivan777 over 8 years
    Excellent! it helps me!.