2013-06-06 25 views
9

Ho problemi ad accedere al frammento della mappa. getFragmentManager(). FindFragmentById (R.id.map)) restituisce sempre null. Non so perché. Qual è il problema?Mapfragment findFragmentById sempre null

Grazie!

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

E in attività dopo il setContentView provo ad accedere alla mappa, ma ricevo un'eccezione

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

risposta

21

uso in questo modo:

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

      map = mapFrag.getMap(); 

here is full code with sample:

+0

scusa per il ritardo. Funziona! – user1852854

+11

Come nota, se utilizzi la libreria di supporto di Android per visualizzare una mappa, assicurati che il file di layout xml che contiene il frammento di mappa abbia un valore di attributo android: name a 'com.google.android.gms.maps.SupportMapFragment 'piuttosto che' com.google.android.gms.maps.MapFragment', altrimenti non funzionerà e continuerà a restituire 'null' – Aryo

+0

Eccellente! mi aiuta!. –

2

Nel caso in cui il problema non è risolto, provate questo:

Come si utilizza SupportMapFragment, durante il recupero di carta, utilizzare

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

Inoltre, Chan ge

public class Mapa extends Activity { 

a

public class Mapa extends FragmentActivity { 
+0

scusa per il ritardo. La risposta è corretta ma non ho bisogno di modificare le estensioni, solo getSupportFragmentManager. Grazie! – user1852854

1

Variazione nel layout

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

da

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

Oppure, è possibile utilizzare getSupportFragmentManager() anziché getFragmentManager().

1

Ho riscontrato un problema simile durante il tentativo di ottenere MapFragment ma l'annullamento perché il dispositivo non ha aggiornato Google Play Services.