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

Lesezeit: 4 Minuten

Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
DjP

Ich habe eine FragmentActivity und möchte darin ein Kartenfragment verwenden. Ich habe ein Problem damit, den Support-Fragment-Manager darauf zuzugreifen.

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

Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
Eldhose M Babu

Sie können direkt anrufen

getParentFragmentManager()  

um den Fragmentmanager zu bekommen. Beachten Sie, dass getFragmentManager() funktioniert auch, wurde aber als veraltet markiert.

  • Wenn ich zum ersten Mal klicke, funktioniert es, aber nachdem ich wieder auf ein anderes Fragment gehe, klicke ich darauf, es zeigt eine leere Seite.

    – DJP

    27. November 13 um 9:41 Uhr

  • Dies ist ein Overhead. Siehe meine Antwort unten … getFragmentManager () ist wirklich alles, was Sie brauchen.

    – Markieren

    17. Juli 14 um 13:27 Uhr


  • Sie brauchen hier keine globale mContext-Variable, verwenden Sie einfach getActivity(), wo immer Sie es in Ihrem Code brauchen. Bitte bearbeiten Sie Ihre Antwort, damit Sie die Leute nicht in die falsche Richtung leiten.

    – Varundroid

    10. Dezember 14 um 3:28 Uhr

  • @Varundroid. Ich stimme der Tatsache zu, dass wir getFragmentManager() jederzeit aufrufen können. Wenn Sie mir Ihre E-Mail-ID senden können, kann ich Ihnen Beispielcode senden, um zu beweisen, dass es auf der Erde Chancen gibt, dass getActivity() null zurückgibt.

    – Eldhose M Babu

    15. Dezember 14 um 7:16 Uhr

  • @androidplusios.design Sie müssen getFragmentManager() und nicht getSupportFragmentManager in Ihrem Fragment aufrufen. getFragmentManager() ist eine Instanzfunktion der Fragment-Klasse und kann daher innerhalb eines Fragments aufgerufen werden, und es wird die aktuelle Instanzreferenz der enthaltenden Fragment-Klasse verwendet.

    – Eldhose M Babu

    17. August 15 um 5:51 Uhr

1643756588 359 Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
markieren

Alles, was Sie tun müssen, ist zu verwenden

getFragmentManager()

Methode auf Ihrem Fragment. Es gibt Ihnen den Support-Fragment-Manager, wenn Sie ihn beim Hinzufügen dieses Fragments verwendet haben.

Fragmentdokumentation

  • Dies sollte die akzeptierte Antwort sein, es wird nicht empfohlen, einen Verweis auf die übergeordnete Aktivität beizubehalten, wie in der ersten Antwort vorgeschlagen.

    – Yoann Hercouet

    18. Oktober 14 um 12:20 Uhr

  • @Mark, das ist eine perfekte Antwort und sollte die akzeptierte Antwort sein.

    – Varundroid

    12. Dezember 14 um 0:30 Uhr

  • Dies gibt android.app.Fragment zurück. In einigen Fällen benötigen Sie android.support.app.v4.Fragment, sodass es nicht immer funktioniert.

    – Dũng Trần Trung

    25. Januar 15 um 02:41 Uhr

  • wie kann man das beheben? Ich glaube, ich brauche das support.app.v4.Fragment

    – Dennis Lukas

    28. Juni 16 um 11:22 Uhr

  • Dadurch wird der entsprechende FragmentManager zurückgegeben. Wenn es sich in einem android.support.app.v4.Fragment befindet, gibt es dasselbe zurück wie die Methode getSupportFragmentManager() in Activity. Der Grund, warum die Methode in diesem Fall einfach getFragmentManager() aufgerufen wird, liegt darin, dass sie nicht mehrdeutig ist, anders als im Fall von Activity.

    – blnden

    6. Januar 17 um 20:26 Uhr

Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
Varundroid

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 Methode onActivityCreated() Ihres Fragments und jeder Methode, die nach onActivityCreated() aufgerufen wird.

  • Dies ist, was ich verwende, obwohl ich ziemlich neu in der Android-Entwicklung bin und nicht sicher bin, ob es die richtige Vorgehensweise ist.

    – Papipo

    19. Februar 15 um 15:37 Uhr

  • @codecaster Sie können den FragmentManager auch mit der Methode getFragmentManager() von Fragment selbst abrufen. Ich habe meine Antwort bearbeitet.

    – Varundroid

    19. Februar 15 um 23:42 Uhr

  • Ich habe hier ein Projekt, das seltsame Dinge getan hat, bis ich getFragmentManager() gegen getActivity.getSupportFragmentManager() ausgetauscht habe.

    – Papipo

    20. Februar 15 um 7:51 Uhr

  • Hmm seltsam. Bisher bin ich noch nie auf ein solches Problem gestoßen, aber keine der oben genannten Lösungen ist schlecht, sodass Sie das verwenden können, was für Sie funktioniert.

    – Varundroid

    20. Februar 15 um 11:40 Uhr

  • Ich habe von Anfang an tief in die Klassen hineingeschaut. Scheint die beste Lösung zu sein, die android.support.v4.app.Fragment verwendet

    – Lieber Dhruv

    30. Juli 16 um 11:33 Uhr

Kotlin-Benutzer versuchen diese Antwort

(activity as AppCompatActivity).supportFragmentManager

1643756589 974 Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
bsautner

Wenn Sie dieses Problem haben und sich auf API-Level 21+ befinden, tun Sie dies:

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

Dadurch wird die Karte abgerufen, wenn sie innerhalb eines Fragments verwendet wird.

  • Ich habe alle oben vorgeschlagenen Codekorrekturen ausprobiert, konnte aber keine davon zum Laufen bringen. getChildFragmentManager() hat es geschafft! Vielen Dank.

    – John Ward

    3. November 16 um 21:02 Uhr

  • Wie wäre es mit einem API-Level unter 21? API-Level 19 zum Beispiel?

    – Aliton Oliveira

    29. November 19 um 18:04 Uhr

1643756589 835 Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
Reza

Die einfache neue Art, dies in Kotlin zu tun

requireActivity().supportFragmentManager

  • Ich habe alle oben vorgeschlagenen Codekorrekturen ausprobiert, konnte aber keine davon zum Laufen bringen. getChildFragmentManager() hat es geschafft! Vielen Dank.

    – John Ward

    3. November 16 um 21:02 Uhr

  • Wie wäre es mit einem API-Level unter 21? API-Level 19 zum Beispiel?

    – Aliton Oliveira

    29. November 19 um 18:04 Uhr

1643756590 496 Wie kann ich in einem Fragment auf getSupportFragmentManager zugreifen
Wanja Rachel

in Java können Sie durch ersetzen

getChildFragmentManager()

in kotlin, mach es einfach durch

childFragmentManager

hoffe es hilft 🙂

.

733400cookie-checkWie kann ich in einem Fragment auf getSupportFragmentManager() zugreifen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy