it-swarm.com.de

Wie kann ich in einem Fragment auf getSupportFragmentManager () zugreifen?

Ich habe eine FragmentActivity und möchte darin ein Kartenfragment verwenden. Ich habe ein Problem damit, dass der Support Fragment Manager darauf zugreifen kann.

 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

Sie können direkt anrufen 

getFragmentManager() 

um den Fragmentmanager zu bekommen.

oder

In deinem Fragment 

Feld erstellen: 

private FragmentActivity myContext;

Überschreiben Sie die onAttach-Methode Ihres Fragments: 

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

Wenn Sie einen Support Fragment Manager-Anruf erhalten möchten: 

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

oder

FragmentManager fragManager = myContext.getFragmentManager();

Du bist fertig.

218
Eldhose M Babu

Alles was Sie tun müssen, ist zu benutzen

getFragmentManager()

methode auf Ihrem Fragment. Sie erhalten den Support-Fragmentmanager, wenn Sie ihn beim Hinzufügen dieses Fragments verwendet haben.

Fragmentdokumentation

74
Mark

Einfach so bekommen -

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.

ODER

getActivity().getSupportFragmentManager();

in der onActivityCreated () - Methode Ihres Fragments und jeder Methode, die nach onActivityCreated () aufgerufen wird.

37
Varundroid

Kotlin-Benutzer versuchen diese Antwort

(activity as AppCompatActivity).supportFragmentManager
10
Ranjith Kumar

wenn Sie dieses Problem haben und sich auf Stufe 21 oder höher befinden, tun Sie Folgendes:

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

dies wird die Karte erhalten, wenn sie innerhalb eines Fragments verwendet wird. 

8
bsautner

Sie können getActivity().getSupportFragmentManager() jederzeit verwenden, wenn Sie "SupportFragmentManager" erhalten möchten.

hierarchie ist Aktivität -> Fragment. fragment kann getSupportFragmentManger nicht direkt aufrufen, Activity jedoch. Daher können Sie mit getActivity die aktuelle Aktivität aufrufen, in der sich das Fragment befindet, und getSupportFragmentManager() erhalten.

6

Meine übergeordnete Aktivität erweitert AppCompatActivity, sodass ich meinen Kontext auf AppCompatActivity statt nur auf Activity übertragen musste.

z.B.

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

tun Sie dies in Ihrem Fragment

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

getActivity().getFragmentManager() Das hat funktioniert oder ich.

Schauen Sie sich auch hier an.

2
Aravindh Gopi

Sie können einfach auf zugreifen

Context mContext;

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

mContext = getActivity();

}

und dann verwenden 

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

Sie können childFragmentManager in Fragmenten verwenden.

0

Der folgende Code macht den Trick für mich

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

getSupportFragmentManager() wird verwendet, wenn Sie aktiv sind und ein Fragment abrufen möchten, auf das Sie jedoch zugreifen können 

getSupportFragmentManager()

mit einer anderen Methode namens getFragmentMangaer() funktioniert das gleiche wie getSupportFragmentManager() und Sie können es wie gewohnt verwenden:

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