Mam FragmentActivity i chcę w nim użyć fragmentu mapy. Mam problem z uzyskaniem dostępu do menedżera fragmentów wsparcia.
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);
android
android-fragments
android-support-library
android-fragmentactivity
fragmentmanager
DjP
źródło
źródło
Wszystko, co musisz zrobić, to użyć
metoda na twoim fragmencie. To da ci menedżera fragmentów wsparcia, gdy użyłeś go podczas dodawania tego fragmentu.
Dokumentacja fragmentów
źródło
Po prostu zrozum to w ten sposób -
LUB
w metodzie onActivityCreated () Twojego Fragmentu i każdej metodzie wywoływanej po onActivityCreated ().
źródło
Użytkownicy Kotlin próbują tej odpowiedzi
źródło
jeśli masz ten problem i jesteś na poziomie API 21+, zrób to:
to dostanie mapę, gdy zostanie użyta wewnątrz fragmentu.
źródło
Możesz użyć
getActivity().getSupportFragmentManager()
kiedy tylko chcesz, aby getSupportFragmentManager.hierarchia to Aktywność -> fragment. fragment nie jest w stanie bezpośrednio wywołać getSupportFragmentManger, ale Activity to robi. W ten sposób możesz użyć getActivity, aby wywołać bieżące działanie, w którym znajduje się fragment, i pobrać
getSupportFragmentManager()
źródło
Moja aktywność nadrzędna rozszerza AppCompatActivity, więc musiałem rzutować mój kontekst na AppCompatActivity zamiast tylko Activity.
na przykład.
źródło
((AppCompatActivity) mContext)
część była DOKŁADNIE tym, czego szukałem. Dziękuję Ci!zrób to w swoim fragmencie
źródło
getActivity().getFragmentManager()
To zadziałało albo ja.Spójrz również tutaj.
źródło
źródło
w java możesz zamienić na
w kotlin, uprość to przez
mam nadzieję, że pomoże :)
źródło
Poniższy kod załatwia sprawę
źródło
Możesz użyć childFragmentManager wewnątrz fragmentów.
źródło
Możesz po prostu uzyskać dostęp do polubień
a następnie użyj
źródło
Jakiś kod Kotlin do użycia supportFragmentManager wewnątrz fragmentu.
źródło
getSupportFragmentManager()
używane, gdy jesteś aktywny i chcesz uzyskać fragment, ale we fragmencie, do którego masz dostępużywając innej metody o nazwie
getFragmentMangaer()
działa tak samogetSupportFragmentManager()
i możesz jej używać tak, jak kiedyś:źródło
Prosty nowy sposób na zrobienie tego w Kotlinie
źródło
Spróbuj tego:
źródło