odpowiedź podstawowy.
Są one użyteczne tylko podczas implementacji metody onSaveInstanceState() i przywracania tego stanu w onCreate(). Jeśli nie implementujesz metody SaveSstanceState(), możesz zapomnieć o tych metodach i udawać, że nie istnieją.
Problem, który rozwiązują: jeśli chcesz zapisać odniesienie do fragmentu w "stanie zapisanej instancji", nie możesz po prostu umieścić tam odwołania do obiektu. Po pierwsze dlatego, że nie można umieścić zwykłego przedmiotu w pakiecie. :) A powodem tego jest to, że punktem tego zapisanego stanu jest skopiowanie go z procesu, więc jeśli twój proces wymaga zabicia, może być później skopiowany z powrotem do nowego procesu, abyś mógł ponownie -inicjalizuj aktywność/fragment z. Surowy obiekt ma znaczenie tylko w kontekście procesu, w którym działa, więc nie jest możliwe prawidłowe skopiowanie odniesienia do takiego obiektu poza bieżący proces i do innego.
Więc to, co putFragment()/getFragment() robi, umieszcza fragment danych w danym pakiecie, który może zidentyfikować ten fragment do nowej instancji aktywności/fragmentu w innym procesie. Dokładnie to, czym jest ta reprezentacja, nie jest zdefiniowane, ale w obecnej implementacji jest to wewnętrzny identyfikator liczby całkowitej dla tego fragmentu, który zostanie użyty później, gdy FragmentManager będzie musiał ponownie utworzyć ten fragment z wcześniej zapisanego stanu ... ponownie utworzony z tym samym identyfikatorem, więc gdy następnie wywołasz funkcję getFragment(), może pobrać liczbę całkowitą i użyć jej do określenia poprawnego obiektu Fragment, aby powrócić do wywołującego, który odpowiada zapisanemu wcześniej.
wiem, że 'putFragment' będzie używana w połączeniu z' onSaveInstanceState' aby zachować odniesienie do fragmentu, jeżeli działalność jest zniszczona na powiedzmy zmianie orientacji lub jeśli system operacyjny musi odzyskać pamięć, z fragment jest pobierany w powiedz 'onCreate (...)'.Dobrze byłoby wiedzieć, kiedy możesz chcieć zachować referencję. Właśnie skończyłem projekt portu fragmentów, w którym nigdy tego nie robiłem, chociaż może powinienem. – PJL
Mam układ dwóch okien dla krajobrazu i portretu, dla których czynności są odtwarzane po zmianie orientacji. Podczas zmiany orientacji moje fragmenty zostaną odtworzone i wczytane do ich kontenerów, tak jak wspomniano powyżej, nie znalazłem potrzeby używania 'put | getFragment', więc dobre przykłady użycia będą dobre. – PJL
Niesamowicie idiotyczna architektura Androida zabija mnie ... – syloc