Wie kann ich in einem Fragment auf getSupportFragmentManager() zugreifen?
Lesezeit: 4 Minuten
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);
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
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.
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
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
bsautner
Wenn Sie dieses Problem haben und sich auf API-Level 21+ befinden, tun Sie dies:
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
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
Wanja Rachel
in Java können Sie durch ersetzen
getChildFragmentManager()
in kotlin, mach es einfach durch
childFragmentManager
hoffe es hilft 🙂
.
7334000cookie-checkWie kann ich in einem Fragment auf getSupportFragmentManager() zugreifen?yes