2013-04-14 16 views
16

Provare a mettere insieme un piccolo MapFragment in un'attività che sto costruendo, ma sto avendo qualche problema nel far funzionare tutto. So che i servizi API e Play di Maps sono entrambi installati correttamente, poiché ho eseguito il tutorial di prova e tutto ha funzionato correttamente.SupportMapFragment - impossibile eseguire il cast da Fragment a MapFragment

In seguito alla documentazione here, si verifica il seguente problema: Nel metodo setUpMapIfNeeded, è possibile utilizzare getFragmentManager() o getSupportFragmentManager(). Quando uso lo getFragmentManager(), Eclipse è bello con esso, ma quando corro, ottengo un NoSuchMethodError dicendo che il metodo non è definito. Quando opto per getSupportFragmentManager(), a Eclipse non piace e mi dà l'errore "Impossibile trasmettere da Fragment a MapFragment". Allora, qual è l'affare? Eventuali suggerimenti?

Fatemi sapere se c'è altro codice che posso fornire e saremo lieti di pubblicarlo rapidamente.

+0

hai l'attributo class nella R.id.map? 'class =" com.google.android.gms.maps.MapFragment "' –

risposta

77

Posso utilizzare getFragmentManager() o getSupportFragmentManager().

Non ci dovrebbero essere discussioni qui. Se è disponibile il numero getSupportFragmentManager(), si utilizza il backport di frammenti del pacchetto di supporto Android e questo è il metodo che è necessario utilizzare.

Quando scelgo getSupportFragmentManager(), a Eclipse non piace e mi dà l'errore "Impossibile trasmettere da Fragment a MapFragment".

Questo perché non si dovrebbe usare MapFragment. Stai utilizzando il backport di frammenti del pacchetto di supporto Android e, pertanto, devi utilizzare SupportMapFragment.

+0

gosh, mi sento davvero stupido ora. ne ero assolutamente consapevole, ma a quanto pare non li avevo modificati tutti in SupportMapFragment. Stavo importando MapFragment e non SupportMapFragment. Grazie! Risolto il mio problema – user2163853

+0

@ user2163853 Anche per l'errore stupido qui! –

+2

A volte gli errori stupidi aiutano gli altri (probabilmente i neofiti) a cogliere un concetto, quindi non sentirsi mai troppo stupidi;) – marienke

0

Questo è quello che dovevo fare, perché stavo lavorando sotto il livello 11;

import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.SupportMapFragment; 
    import android.support.v4.app.FragmentActivity; 

    public class MapaActivity extends FragmentActivity { 

    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_mapa); 

     map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapa)).getMap(); 
    } 
} 
0

hey sufficiente aggiungere vaso v4 alle vostre librerie cartella e aggiungere a costruire poi nella tua pagina Frammento solo importare

import android.support.v4.app.FragmentActivity;

voi potrebbero in grado di estende FragmentActivity

public class MainActivity estende FragmentActivity implementa LocationListener {

}

ed è anche l'accesso getSupportFragmentManager();

SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager(). FindFragmentById (R.id.map);

Problemi correlati