Mam fragment wewnątrz działania grupowego i chcę go zastąpić innym fragmentem:
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Działa dobrze, gdy jest wykonywany jako osobny projekt bez użycia grupy aktywności, wszystko działa dobrze w log cat, ponieważ kontrola przechodzi do getview (), ale żaden widok nie jest widoczny, nie ma nawet żadnego wyjątku, chcę, aby fragment szczegółów książki zastąpić fragmentem szczegółu przekroju.
XML fragmentu szczegółów książki ma id book_description_fragment, a xml dla fragmentu opisu sekcji ma id section_description_fragment.
Powyższy kod jest w metodzie onClick elementu, chcę, aby po dotknięciu elementu przez użytkownika w widoku przewijania poziomego fragment się zmienił.
źródło
onCreateView()
. Tak więc, jak możesz założyć, wszelkie odniesienia do fragmentu są faktycznie tracone na poziomie widoku. Tak więc w zasadzie nie można zastąpić fragmentu, ale raczej można ręcznie usunąć widoki obecne w kontenerze i zamiast tego umieścić tam fragment, jeśli jest to wymagane.Zobacz to pytanie
Możesz zastąpić tylko „ fragment dodawany dynamicznie ”.
Jeśli więc chcesz dodać fragment dynamiczny, zobacz ten przykład.
źródło
Zrobiłem podsumowanie z doskonałą metodą zarządzania wymianą fragmentów i cyklem życia .
Zastąpi tylko aktualny fragment nowym, jeśli nie jest taki sam i nie znajduje się w backstacku (w tym przypadku go wyskoczy).
Zawiera kilka opcji, tak jakbyś chciał, aby fragment został zapisany w backstacku.
=> Zobacz Gist tutaj
Korzystając z tego i jednego działania, możesz dodać to do swojego działania:
źródło
Użyj poniższego kodu w android.support.v4
źródło
Użyj tego kodu w wersji v4
źródło
mam nadzieję, że dobrze sobie radzisz. kiedy zacząłem pracę z,
Android Fragments
to też miałem ten sam problem, wtedy przeczytałem o 1- Jak zamienić fragment na inny. 2- Jak dodać fragment, jeśliFragment container
nie ma żadnego fragmentu.potem, po kilku badaniach i rozwoju, stworzyłem funkcję, która do tej pory pomaga mi w wielu projektach i nadal używam tej prostej funkcji.
miłego czasu na kod :)
źródło
Użyj ViewPager. To dla mnie praca.
źródło
Możesz użyć tego kodu
lub możesz użyć kodu
źródło
W Kotlinie możesz:
źródło
możesz użyć prostego kodu do transakcji
źródło
Dynamicznie zmieniam fragment w kodzie jednowierszowym.
Działa w dowolnej wersji SDK i androidx
, jako
BottomNavigationView
źródło