2013-06-06 39 views
9

Mam problemy z dostępem do fragmentu mapy. getFragmentManager(). FindFragmentById (R.id.map)) zwraca zawsze wartość null. Nie wiem dlaczego. W czym problem?Mapfragment findFragmentById zawsze null

Dziękujemy!

<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> 

oraz w działalności po setContentView próbuję uzyskać dostęp do mapy, ale otrzymuję wyjątek

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(); 
} 

Odpowiedz

21

wykorzystanie w ten sposób:

SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager() 
        .findFragmentById(R.id.map); 

      map = mapFrag.getMap(); 

here is full code with sample:

+0

Przepraszam za opóźnienie. To działa! – user1852854

+11

Uwaga: jeśli korzystasz z biblioteki pomocy Androida do wyświetlania mapy, upewnij się, że plik układu strony xml zawierający fragment mapy powinien mieć wartość atrybutu android: name na "com.google.android.gms.maps.SupportMapFragment 'zamiast' com.google.android.gms.maps.MapFragment', w przeciwnym razie nie będzie działać i będzie zwracał 'null' – Aryo

+0

Excellent! pomaga mi!. –

2

W przypadku problem nie został rozwiązany, spróbuj tego:

jako używasz SupportMapFragment, podczas pobierania mapy, użyj

GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

także chan ge

public class Mapa extends Activity { 

do

public class Mapa extends FragmentActivity { 
+0

Przepraszam za opóźnienie. Odpowiedź jest poprawna, ale nie trzeba zmieniać rozszerzeń, tylko getSupportFragmentManager. Dziękuję Ci! – user1852854

1

Zmiana układu

android:name = "com.google.android.gms.maps.SupportMapFragment"

przez

android:name = "com.google.android.gms.maps.MapFragment".

Lub można użyć getSupportFragmentManager() zamiast getFragmentManager().

1

Miałem podobny problem, gdy próbowałem pobrać MapFragment, ale otrzymałem null, ponieważ urządzenie nie miało zaktualizowanych Usług Google Play.