1)fragmentTransaction.addToBackStack(str);
Opis - Dodaj tę transakcję do tyłu stosu. Oznacza to, że transakcja zostanie zapamiętana po jej zatwierdzeniu i odwróci jej działanie po późniejszym wyrzuceniu stosu.
2)fragmentTransaction.replace(int containerViewId, Fragment fragment, String tag)
Opis - zastąpić istniejący fragmentu, który został dodany do pojemnika. Jest to w zasadzie to samo, co wywołanie remove (Fragment) dla wszystkich aktualnie dodanych fragmentów, które zostały dodane z tym samym containerViewId, a następnie dodane (int, Fragment, String) z tymi samymi argumentami, które podano tutaj.
3)fragmentTransaction.add(int containerViewId, Fragment fragment, String tag)
Opis - dodanie fragmentu stanu aktywności. Fragment ten może opcjonalnie mieć również swój widok (jeśli Fragment.onCreateView zwraca wartość inną niż null) w widoku kontenera działania.
Co to znaczy zastąpić istniejący już fragment, a dodając fragment do stanu aktywności i dodanie działalność na tylnym stosie?
Istnieje stos, w którym przechowywane są wszystkie czynności w stanie roboczym. Fragmenty należą do działalności. Możesz więc dodać je do osadzenia w działaniu.
Można łączyć wiele fragmentów w jedną czynność, aby utworzyć wielowpaniowy interfejs użytkownika i ponownie wykorzystać fragment w wielu działaniach. Jest to zasadniczo przydatne, gdy zdefiniowałeś swój kontener fragmentów w różnych układach. Trzeba tylko zastąpić dowolnym innym fragmentem w dowolnym układzie.
Po przejściu do bieżącego układu masz identyfikator tego kontenera, który zastąpi go żądanym fragmentem.
Możesz także powrócić do poprzedniego fragmentu w backStack metodą popBackStack()
. W tym celu należy dodać ten fragment w stosie przy użyciu addToBackStack()
, a następnie commit()
do odzwierciedlenia. To jest w odwrotnej kolejności z aktualnym na górze.
findFragmentByTag szuka tego tagu dodawanego metodą add/replace lub addToBackStack?
Jeśli zależy od tego, w jaki sposób dodałeś tag. Następnie znajduje fragment po swoim tagu, który zdefiniowałeś wcześniej, albo po nadmuchaniu z XML, albo jako dostarczony po dodaniu w transakcji.
Referencje: FragmentTransaction
dzięki za wyjaśnienie tego tak dobrze! –
Czy mogę dodać fragment, zastępując metodę na początku działania? – NPE
(Żaden fragment nie został dodany wcześniej) – NPE