2014-12-11 5 views
35

Ho trovato il messaggio Impossibile risolvere il metodo 'getSupportFragmentManager()' Voglio frammentare come attività. perché voglio utilizzare Maps sullo scorrimento delle schede.Impossibile risolvere il metodo 'getSupportFragmentManager()' all'interno di Frammento

public class PETAcikarangsukatani extends Fragment { 
Context context; 

private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108); 
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158); 
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472); 
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984); 


GoogleMap googleMap; 
final String TAG = "PathGoogleMapActivity"; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false); 
    context = rootView.getContext(); 

    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    googleMap = fm.getMap(); 
+0

Mappa è un frammento o è un contenitore? –

+0

Possibile duplicato di [Come posso accedere a getSupportFragmentManager() in un frammento?] (Http://stackoverflow.com/questions/20237531/how-can-i-access-getsupportfragmentmanager-in-a-fragment) – blahdiblah

+0

qui è spiegato correttamente https://www.youtube.com/watch?v=JWk3PXV6O98 –

risposta

50

All'interno di un Fragment sottoclasse è necessario utilizzare getFragmentManager al posto di getSupportFragmentManager. Otterrai il supporto se l'importazione proviene dalla libreria di supporto.

+0

Già l'ho fatto, ma ancora non sto funzionando – Irwans

+0

cosa significa, * ma ancora non funziona *? – Blackbelt

+0

anche tu devi cambiare in fragmrnt xml, da: android: name = "com.google.android.gms.maps.SupportMapFragment" per android: name = "com.google.android.gms.maps.MapFragment" –

2

getSupportFragmentManager() non fa parte di Fragment, quindi non è possibile ottenerlo qui in questo modo. È possibile ottenere da genitore Activity (così nel onAttach() più presto) con una normale

activity.getSupportFragmentManager(); 

o si può provare getChildFragmentManager(), che è nella dotazione di frammento, ma richiede API17 +

1

Se stai ricevendo "Non metodo di determinazione getSupportFragmentManager()", provare a utilizzare

this.getSupportFragmentManager() 

funziona per me quando si tratta di DialogFragments in Android

11

Usa getActivity().getSupportFragmentManager()

2

si dovrebbe usare

getActivity.getSupportFragmentManager() like 
//in my fragment 
SupportMapFragment fm = (SupportMapFragment)  
getActivity().getSupportFragmentManager().findFragmentById(R.id.map); 

ho anche questi problemi ma decisi dopo l'aggiunta di getActivity() prima getSupportFragmentManager.

39

per il mio caso, ho fatto in modo che Frammento classe è importata da

android.support.v4.app.Fragment

Non

da

Android .app.Fragment

Poi ho usato

getActivity() getSupportFragmentManager().;

E ora funziona. Se io uso l'istanza di attività che ho ottenuto su Attack() non funziona anche.

+0

Questa è una nota importante: è necessario aggiungere il supporto Android v4 per funzionare. – Machado

10

Sostituire getSupportFragmentManager() con getFragmentManager() se si sta lavorando in api 21. O Se l'applicazione supporta le versioni di Android di età superiore a 3.0, assicurati di aver impostato il tuo progetto Android con la libreria di supporto come descritto in Configurazione di un progetto per utilizzare una libreria e usa getSupportFragmentManager() questa volta.

+0

Benvenuti in StackOverflow. Forse vuoi leggere [la nostra guida alla modifica] (http://stackoverflow.com/editing-help) per migliorare la formattazione dei post (in particolare la sezione [Code Spans] (http://stackoverflow.com/editing-help# codice)). – user1438038

27

Estende FragmentActivity invece di attività

+1

Come potete vedere, l'argomento topic stava chiedendo del problema 'Fragment' e non di' Activity'. –

+1

Hai salvato la mia giornata. Grazie mille :) –

+0

Oops! non hai risposto direttamente alla domanda del richiedente, ma alla mia! l'hai risolto grazie +1 –

6

Inoltre è possibile utilizzare AppCompatActivity invece di attività.
Quindi il getSupportFragmentManager() funzionerà.
E, inoltre, non dimenticate di fare il vostro tema App si estendono AppCompat tema in questo caso

0

ho provato tutti al di sopra, ma nessuno lavora

Infine provato questo il mio

getBaseActivity().getFragmentManager() 

e sta lavorando .. :)

2

getFragmentManager()

basta provare questo.it ha funzionato per il mio caso

+0

mente da elaborare? – manetsus

0

Come per la documentazione, getSupportFragmentManager() è presente solo nella classe AppCompatActivity. Non è presente nella classe di attività. Quindi assicurati che la tua classe estenda la classe AppCompatActivity.

public class MainActivity extends AppCompatActivity { 
}