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

J’ai un FragmentActivity et je souhaite utiliser un fragment de carte. J’ai un problème pour que le gestionnaire de fragments de support puisse 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); 

    Vous pouvez appeler directement

     getFragmentManager() 

    obtenir le gestionnaire de fragment.

    ou

    Dans votre fragment,

    Créer un champ:

     private FragmentActivity myContext; 

    remplacez la méthode Attache de votre fragment:

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

    Lorsque vous avez besoin d’obtenir un appel du gestionnaire de fragments de support:

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

    ou

     FragmentManager fragManager = myContext.getFragmentManager(); 

    Vous avez terminé.

    Tout ce que vous devez faire est d’utiliser

     getFragmentManager() 

    méthode sur votre fragment. Il vous donnera le gestionnaire de fragment de support lorsque vous l’utiliserez en ajoutant ce fragment.

    Documentation de fragment

    Il suffit de l’obtenir 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 toute méthode appelée après onActivityCreated ().

    Les utilisateurs de Kotlin essaient cette réponse

     (activity as AppCompatActivity).supportFragmentManager 

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

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

    Cela permettra d’obtenir la carte lorsqu’elle est utilisée à l’intérieur d’un fragment.

    Vous pouvez utiliser getActivity().getSupportFragmentManager() tout moment lorsque vous souhaitez obtenir un support de gestion de paquets.

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

    Mon activité parent étend AppCompatActivity, j’ai donc dû convertir mon contexte en AppCompatActivity au lieu de simplement activité.

    par exemple.

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

    faites ceci dans votre fragment

     getActivity().getSupportFragmentManager() 

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

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

    Regardez aussi ici.

    Essaye ça:

     private SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager()); 

    getSupportFragmentManager() utilisé lorsque vous êtes en activité et que vous souhaitez obtenir un fragment mais dans le fragment getSupportFragmentManager() vous pouvez accéder

     getSupportFragmentManager() 

    en utilisant une autre méthode appelée getFragmentMangaer() fonctionne de la même façon que getSupportFragmentManager() et vous pouvez l’utiliser comme vous avez l’habitude de:

     fragmentTransaction =getFragmentManager().beginTransaction(); 

    Le code suivant fait le tour pour moi

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