web-dev-qa-db-fra.com

Comment puis-je accéder à getSupportFragmentManager () dans un fragment?

J'ai un FragmentActivity et je veux utiliser un fragment de carte en son sein. Je ne parviens pas à obtenir le gestionnaire de fragments de support pour y accéder.

 if (googleMap == null) {
            googleMap = ((SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map1)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }

            // create marker
            MarkerOptions marker = new MarkerOptions().position(
                    new LatLng(latitude, longitude)).title("Hello Maps ");

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(latitude, longitude)).zoom(15).build();

            googleMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(cameraPosition));

            // adding marker
            googleMap.addMarker(marker);
118
DjP

Vous pouvez appeler directement 

getFragmentManager() 

pour obtenir le gestionnaire de fragments.

ou

Dans ton fragment, 

Créer un champ: 

private FragmentActivity myContext;

redéfinissez la méthode onAttach de votre fragment: 

@Override
public void onAttach(Activity activity) {
    myContext=(FragmentActivity) activity;
    super.onAttach(activity);
}

Lorsque vous avez besoin d'appeler le gestionnaire de fragments de support: 

FragmentManager fragManager = myContext.getSupportFragmentManager(); //If using fragments from support v4

ou

FragmentManager fragManager = myContext.getFragmentManager();

Vous avez terminé.

218
Eldhose M Babu

Tout ce que vous devez faire est d'utiliser

getFragmentManager()

méthode sur votre fragment. Il vous donnera le gestionnaire de fragments de support, lorsque vous l'avez utilisé lors de l'ajout de ce fragment.

Fragment Documentation

74
Mark

Obtenez-le simplement comme ça -

getFragmentManager() // This will also give you the SupportFragmentManager or FragmentManager based on which Fragment class you have extended - Android.support.v4.app.Fragment OR Android.app.Fragment.

OU

getActivity().getSupportFragmentManager();

dans la méthode onActivityCreated () de votre fragment et dans toute méthode appelée après onActivityCreated ().

37
Varundroid

Les utilisateurs de Kotlin essaient cette réponse

(activity as AppCompatActivity).supportFragmentManager
10
Ranjith Kumar

si vous avez ce problème et que vous êtes au niveau 21+, faites ceci:

   map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
                    .getMap();

la carte sera utilisée si elle est utilisée à l'intérieur d'un fragment. 

8
bsautner

Vous pouvez utiliser getActivity().getSupportFragmentManager() à tout moment pour obtenir getSupportFragmentManager.

la hiérarchie est Activité -> fragment. fragment n'est pas capable d'appeler directement getSupportFragmentManger mais Activity peut le faire. Ainsi, vous pouvez utiliser getActivity pour appeler l’activité en cours dans laquelle se trouve le fragment et obtenir getSupportFragmentManager().

6
Emil Reña Enriquez

Mon activité parent étend AppCompatActivity et j'ai donc dû transtyper mon contexte en AppCompatActivity au lieu de simplement Activity.

par exemple.

FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance();
FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();
4
Akinola Olayinka

fais ceci dans ton fragment

getActivity().getSupportFragmentManager()
3
philip mudenyo
((AppCompatActivity) getActivity()).getSupportFragmentManager()
2
Diako Hasani

getActivity().getFragmentManager() Cela a fonctionné ou moi.

Regardez aussi ici.

2
Aravindh Gopi

Vous pouvez simplement accéder comme

Context mContext;

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

mContext = getActivity();

}

et ensuite utiliser 

FragmentManager fm = ((FragmentActivity) mContext)
                        .getSupportFragmentManager();
1
Ashwini.patil

Vous pouvez utiliser childFragmentManager dans Fragments.

0
KishanSolanki124

Le code suivant fait le tour pour moi

 SupportMapFragment mapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map));
    mapFragment.getMapAsync(this);
0
olajide

getSupportFragmentManager() utilisé lorsque vous êtes en activité et que vous voulez obtenir un fragment, mais vous pouvez y accéder. 

getSupportFragmentManager()

en utilisant une autre méthode appelée getFragmentMangaer() fonctionne de la même manière que getSupportFragmentManager() et vous pouvez l’utiliser comme vous le faisiez auparavant:

fragmentTransaction =getFragmentManager().beginTransaction();
0
Mohamed Ayed