Fragment
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
17 kwietnia 2024 r. | 1.6.2 | 1.7.0-rc02 | - | 1.8.0-alfa02 |
Deklarowanie zależności
Aby dodać zależność do fragmentu Fragment, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowy
dependencies { def fragment_version = "1.6.2" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.6.2" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.8
Wersja 1.8.0-alfa02
17 kwietnia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.8.0-alpha02
została zwolniona. Wersja 1.8.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Z fragmentu
1.7.0-rc02
: dodano dzienniki wskazujące, dlaczego ustawieniesharedElement
bez żadnych innych przejść nie zostanie uruchomione. (Iec48e). - Z fragmentu
1.7.0-rc02
naprawiliśmy błąd, który powodował awarię, jeśli do transakcji, w której można było przeszukiwać wszystkie pozostałe przejścia, był dodawany niemożliwy do wyszukania element udostępniony. Teraz transakcja zostanie uznana za niepożądaną. (I18ccd)
Wersja 1.8.0-alfa01
3 kwietnia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.8.0-alpha01
została zwolniona. Wersja 1.8.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Nowa
AndroidFragment
Composable
umożliwia dodawanie fragmentów do hierarchii Compose za pomocą nazwy klasy fragmentu. Automatycznie obsługuje zapisywanie i przywracanie stanu fragmentu. Można go użyć jako bezpośredniego zamiennika AndroidViewBindingComposable
.(b/312895363, Icf841).
Zmiany w dokumentacji
- Zaktualizowaliśmy dokumentację interfejsów API
OnBackStackChangedListener
, aby wskazać, kiedy są wywoływane i jak powinny być używane. (I0bfd9)
Aktualizacja zależności
- Fragment ten zależy teraz od instalatora profilu w wersji 1.3.1.
Wersja 1.7
Wersja 1.7.0-rc02
17 kwietnia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-rc02
została zwolniona. Wersja 1.7.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano logi, aby wskazać, dlaczego ustawienie
sharedElement
bez żadnych innych operacji przenoszenia nie powiedzie się. (Iec48e). - Naprawiono błąd, który powodował awarię, jeśli do transakcji, w której można było przeszukiwać wszystkie pozostałe przejścia, był dodawany niemożliwy do wyszukania element udostępniony. Teraz transakcja zostanie uznana za niepożądaną. (I18ccd)
Wersja 1.7.0-rc01
3 kwietnia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-rc01
została zwolniona. Wersja 1.7.0-rc01 zawiera te zatwierdzenia.
Aktualizacja zależności
- Fragment ten zależy teraz od instalatora profilu w wersji 1.3.1.
Wersja 1.7.0-beta01
20 marca 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-beta01
została zwolniona. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Parametr
FragmentHostCallback
jest teraz zapisywany w Kotlin tak, aby wartość null rodzaju ogólnego typu hosta odpowiadała wartości null typu zwracanego typuonGetHost()
. (I40af5)
Poprawki błędów
- Naprawiono błąd polegający na tym, że po wykonaniu gestu prognozowania wstecznego we fragmencie, który nie znajduje się w kontenerze, fragment ten nigdy nie został zniszczony. Fragment zostanie natychmiast przeniesiony do stanu końcowego. (Ida0d9).
- Naprawiono błąd w plikach Fragments, który powodował, że przerywanie przychodzących przejść gestem przewidywania powrotu powodowało zniszczenie widoku wprowadzania i pozostawienie pustego ekranu. (Id3f22, b/319531491)
Wersja 1.7.0-alfa10
7 lutego 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha10
została zwolniona. Wersja 1.7.0-alpha10 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy znany problem w poprzedniej wersji Fragmentu, w wyniku którego przy korzystaniu z funkcji przewidywania wstecznej strony Fragment w przypadku przejścia
Animator
lub AndroidaX Fragmenty powodowały zwracanie błęduNullPointerException
z poziomuhandleOnBackProgressed
, jeśli nigdy nie dodanoFragmentManager.OnBackStackChangedListener
w interfejsieaddOnBackStackChangedListener
. (I7c835)
Wersja 1.7.0-alfa09
24 stycznia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha09
została zwolniona. Wersja 1.7.0-alpha09 zawiera te zatwierdzenia.
Artefakt tworzenia fragmentu kodu
Utworzono nowy artefakt fragment-compose
, który skupia się na obsłudze aplikacji, które są w trakcie przechodzenia z architektury opartej na fragmentach na architekturę w pełni opartą na tworzeniu.
Pierwszą funkcją dostępną w tym nowym artefakcie jest metoda rozszerzenia content
w Fragment
, która ma ułatwić korzystanie z funkcji Utwórz w interfejsie pojedynczego fragmentu. Aby to zrobić, wystarczy utworzyć ComposeView
i ustawić prawidłową wartość ViewCompositionStrategy
. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Nowe funkcje
FragmentManager.OnBackStackChangedListener()
udostępnia teraz zdarzeniaonBackStackChangeProgressed()
ionBackStackChangeCancelled()
do otrzymywania odpowiednio prognozowanych postępów oraz anulowanych zdarzeń. (214b87)
Znany problem
- W przypadku korzystania z funkcji przewidywania wstecznego przejścia w elemencie Fragment w przypadku przejścia
Animator
lub przejścia AndroidX Fragmenty będą zgłaszać atakNullPointerException
z protokołuhandleOnBackProgressed
, jeśli nigdy nie dodano elementuFragmentManager.OnBackStackChangedListener
w ramach funkcjiaddOnBackStackChangedListener
. Ręczne dodanie detektora rozwiąże problem. Poprawka tego błędu będzie dostępna w następnej wersji aplikacji Fragmenty.
Wersja 1.7.0-alfa08
10 stycznia 2024 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha08
została zwolniona. Wersja 1.7.0-alpha08 zawiera te zatwierdzenia.
Czyszczenie danych
- Usunięto obejście problemu z biblioteką przenoszenia, które zostało rozwiązane w procesie przenoszenia
1.5.0-alpha06
. (I04356)
Wersja 1.7.0-alfa07
29 listopada 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha07
została zwolniona. Wersja 1.7.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd
NullPointerException
powodowany przez ustawienie przejścia elementu współdzielonego oraz brak ustawienia wejścia/wyjścia. (I8472b) - Z fragmentu
1.6.2
: gdy fragment koduFragmentContainerView
zostanie powiększony, jego stany takie jakFragmentManager
, Host i id są teraz dostępne w wywołaniu zwrotnymonInflate
. (I1e44c, b/307427423) - Z fragmentu
1.6.2
: jeśli używaszclearBackStack
do usuwania zestawu fragmentów,ViewModel
każdego zagnieżdżonego fragmentu nadrzędnego jest teraz wyczyszczona, gdy poleViewModels
fragmentu nadrzędnego jest wyczyszczone. (I6d83c, b/296173018)
Wersja 1.7.0-alfa06
4 października 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha06
została zwolniona. Wersja 1.7.0-alpha06 zawiera te zatwierdzenia.
Aktualizacja zależności
- Fragmenty kodu zostały zaktualizowane, aby były zgodne z nowym interfejsem API
animateToStart
dodanym w przeniesieniu1.5.0-alpha04
.
Wersja 1.7.0-alfa05
20 września 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha05
została zwolniona. Wersja 1.7.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Fragmenty zapewniają teraz obsługę funkcji prognozowania wstecznego podczas korzystania z przejścia Androidx. Dzięki temu możesz używać gestu wstecz, aby przechodzić do poprzedniego fragmentu za pomocą własnego przejścia Androidx, zanim zdecydujesz się zatwierdzić lub anulować transakcję za pomocą wykonanego gestu. Aby włączyć tę funkcję, musisz korzystać z wersji Przenieś
1.5.0-alpha03
. (Ib49b4, b/285175724)
Znane problemy
- Obecnie występuje problem, który polega na tym, że po anulowaniu gestu wstecz z przejściem następnym razem, gdy znowu użyjesz gestu cofania, przejście nie zostanie wykonane, a ten ekran będzie pusty. Przyczyną może być problem w bibliotece przenoszenia. (b/300157785). Jeśli zauważysz ten problem, zgłoś problem dotyczący fragmentu kodu, podając przykładowy projekt, który odtwarza problem. Przewidywanie działań możesz wyłączyć, używając funkcji
FragmentManager.enabledPredictiveBack(false)
w sekcjionCreate()
Twojej aktywności.
Wersja 1.7.0-alfa04
6 września 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha04
została zwolniona. Wersja 1.7.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd związany z anulowaniem gestu przewidywania wstecznego, który powodował, że fragmenty nie mogły przejść do prawidłowego stanu cyklu życia. (I7cffe, b/297379023)
- Naprawiono regresje, w których animacje mogły być uruchamiane z przejściami. (I59f36)
- Naprawiono błąd związany z używaniem funkcji przewidywanego powrotu z fragmentami, w przypadku których dwukrotne przejście w szybkiej kolejności od drugiego do ostatniego fragmentu na tylnym stosie powodowało awarię. (Ifa1a4)
Wersja 1.7.0-alfa03
23 sierpnia 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha03
została zwolniona. Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd z fragmentami przy użyciu funkcji przewidywania wstecznej, która powodowała pominięcie pierwszego fragmentu w tylnym stosie menedżera fragmentów i zakończenie działania w przypadku używania wstecznego systemu za pomocą trzech przycisków lub gestu przewidywanego przejścia wstecz. (I0664b, b/295231788)
Wersja 1.7.0-alfa02
9 sierpnia 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha02
została zwolniona. Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- W przypadku używania fragmentów z funkcją przewidywania gestów wstecznych z interfejsu API 34, jeśli używasz systemu przejść, który nie obsługuje przewijania (
Animations
,Transitions
) lub w ogóle nie ma przejść, Fragmenty będą teraz czekać na zakończenie gestu przed wykonaniem działania wstecz. (I8100c)
Wersja 1.7.0-alfa01
7 czerwca 2023 r.
Aplikacja androidx.fragment:fragment-*:1.7.0-alpha01
została zwolniona. Ta wersja została opracowana w gałęzi wewnętrznej.
Nowe funkcje
- Fragmenty zapewniają teraz obsługę funkcji prognozowania w aplikacji podczas korzystania z metody
Animator
. Dzięki temu możesz użyć gestu wstecz, aby zobaczyć poprzedni fragment w niestandardowym animatorze, zanim zdecydujesz, czy chcesz zatwierdzić transakcję zakończonym gestem czy anulować. Możesz też wyłączyć to nowe zachowanie, używając eksperymentalnego elementuenablePredictiveBack()
i przekazującfalse
.
Wersja 1.6
Wersja 1.6.2
1 listopada 2023 roku
Aplikacja androidx.fragment:fragment-*:1.6.2
została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Po powiększeniu fragmentu elementu
FragmentContainerView
jego stany, takie jakFragmentManager
, Host i id, są teraz dostępne w wywołaniu zwrotnymonInflate
. (I1e44c, b/307427423) - Jeśli użyjesz polecenia
clearBackStack
do usunięcia zestawu fragmentów,ViewModel
zagnieżdżonego fragmentu kodu zostanie teraz wyczyszczona, gdy poleViewModels
fragmentu nadrzędnego zostanie wyczyszczone. (I6d83c, b/296173018)
Wersja 1.6.1
26 lipca 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.1
została zwolniona. Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem polegający na tym, że zapisany stan przechowywany, gdy aktywność została zatrzymana, ale nie zniszczona, był nieprawidłowo zapisywany w pamięci podręcznej nawet po przeniesieniu instancji fragmentu z powrotem do stanu
RESUMED
. Powoduje to ponowne użycie stanu z pamięci podręcznej, jeśli dana instancja fragmentu znajdowała się w tylnym stosie podczas zapisywania i przywracania danego fragmentu za pomocą interfejsu API wielu wstecznych stosów. (I71288, b/246289075)
Aktualizacja zależności
- Fragment zależy teraz od aktywności 1.7.2. Rozwiązaliśmy problem, który powodował, że użytkownicy usługi Kotlin nie mogli przedłużyć
ComponentDialog
bez wyraźnego zależności od aktywności. (b/287509323)
Wersja 1.6.0
7 czerwca 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0
została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.5.0
- Zapisany stan komponentów
Fragment
został całkowicie podzielony między stan biblioteki prywatnej (niestandardowe klasyParcelable
) i stan podany przez dewelopera, który jest teraz zawsze przechowywany w elemencieBundle
, który umożliwia dokładne określenie, skąd pochodzi stan fragmentu. - Interfejs
FragmentManager.OnBackStackChangedListener
został rozszerzony o 2 dodatkowe wywołania zwrotneonBackStackChangeStarted
ionBackStackChangeCommitted
, które są wywoływane z każdym elementemFragment
tuż przed ich dodaniem do stosu fragmentów lub z nim bezpośrednio po zatwierdzeniu transakcji. - Element
FragmentStrictMode
dodał nowy elementWrongNestedHierarchyViolation
, który wykrywa, że fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodawany do elementuchildFragmentManager
nadrzędnego. - Interfejsy API
Fragment
iFragmentManager
, które biorą pod uwagęIntent
lubIntentSender
, są teraz prawidłowo oznaczone adnotacją@NonNull
, aby zapobiec przekazywaniu wartości null w postaci wartości null, co zawsze powodowałoby awarię odpowiednich interfejsów API platformy Androida wywoływanych przez te metody. DialogFragment
zapewnia teraz dostęp do bazowego zasobu (ComponentDialog
) za pomocą interfejsu APIrequireComponentDialog()
.- Fragment zależy teraz od cyklu życia
2.6.1
. - Fragment zależy teraz od parametru SavedState
1.2.1
. - Fragment zależy teraz od elementu ProfileInstaller
1.3.0
. Artefakt
fragment-testing-manifest
oddziela wpisy manifestu od pozostałych komponentów testowania fragmentów. Oznacza to, że możesz:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Pozwala to uniknąć konfliktów z powodu odchylenia wersji między
fragment-testing
aandroidx.test
Wersja 1.6.0-rc01
10 maja 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-rc01
została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w przypadku kilku następujących po sobie żądań
startActivityForResult
wysyłane były żądaniaActivityResult
z nieprawidłowym kodem. (If0b9d, b/249519359) - Rozwiązaliśmy problem, który powodował, że wywołania zwrotne
onBackStackChangeListener
były wysyłane w przypadku transakcji, które tak naprawdę nie zmieniały stosu wstecznego, jeśli były wymieszane z transakcjami, które to robią. (I0eb5c, b/279306628)
Wersja 1.6.0-beta01
19 kwietnia 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-beta01
została zwolniona. Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Użycie właściwości
postponeEnterTransition
z limitem czasu, a następnie zastąpienie odłożonego fragmentu, nie skutkuje już wyciekiem odłożonego fragmentu. (I2ec7d, b/276375110) - Nowe wywołania zwrotne
onBackStackChangeStarted
ionBackStackChangeCommitted
będą teraz wysyłać fragment tylko raz, nawet jeśli wiele transakcji zawiera ten sam fragment. (Ic6b69)
Wersja 1.6.0-alfa09
5 kwietnia 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha09
została zwolniona. Wersja 1.6.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
DialogFragment
zapewnia teraz dostęp do bazowego zasobu (ComponentDialog
) za pomocą interfejsu APIrequireComponentDialog()
. (I022e3, b/234274777)- Interfejsy
commitNow()
,executePendingTransactions()
ipopBackStackImmediate()
interfejsy API zostały oznaczone adnotacją z tekstem@MainThread
, co oznacza, że teraz wszystkie będą zwracać błędy kompilacji, gdy nie zostaną wywołane z wątku głównego, zamiast czekać na błąd w czasie działania. (Ic9665, b/236538905)
Poprawki błędów
- Naprawiliśmy błąd w
FragmentManager
, który powodował, że zapisanie i przywracanie w tej samej ramce mogło powodować awarię. (Ib36af, b/246519668) - Wywołania zwrotne
OnBackStackChangedListener
onBackStackChangeStarted
ionBackStackChangeCommitted
są teraz wykonywane tylko po zmianie stosu wstecznegoFragmentManager
. (I66055, b/274788957)
Wersja 1.6.0-alfa08
22 marca 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha08
została zwolniona. Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.
Zmiana w działaniu
- Czas wywołania zwrotnego
OnBackStackChangedListener.onBackStackChangeCommited
został dostosowany do wykonania przed wykonaniem operacji na fragmencie. Dzięki temu wywołanie zwrotne nie będzie nigdy przekazywane do odłączonego fragmentu. (I66a76, b/273568280)
Poprawki błędów
- Z fragmentu
1.5.6
: naprawiliśmy błąd polegający na tym, że wywołanie metodyclearFragmentResultListener
w elemenciesetFragmentResultListener
nie działało, jeśli wartośćLifecycle
miała już wartośćSTARTED
, a wynik był już dostępny. (If7458)
Aktualizacje zależności
- Fragment zależy teraz od cyklu życia
2.6.1
. (586fe7) - Fragment zależy teraz od parametru SavedState
1.2.1
. (078e4e) - Fragment zależy teraz od elementu ProfileInstaller
1.3.0
. (3fc05b)
Wersja 1.6.0-alfa07
8 marca 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha07
została zwolniona. Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Z fragmentu
1.5.6
: usunięto problem polegający na tym, że usunięcie dowolnego fragmentu kodu, niezależnie od tego, czy dodało do niego pozycje menu, skutkowało unieważnieniem menu aktywności. (50f098, b/244336571)
Wersja 1.6.0-alfa06
22 lutego 2023 roku
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha06
została zwolniona. Wersja 1.6.0-alpha06 zawiera te zatwierdzenia.
Zmiana działania
- Nowe wywołanie zwrotne
onBackStackChangedStarted
w tabelionBackStackChangedListener
serweraFragmentManager
będzie teraz wykonywane, zanim fragmenty zaczną być przenoszone do stanów docelowych. (I34726)
Wersja 1.6.0-alfa05
8 lutego 2023 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha05
została zwolniona. Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Interfejs
FragmentManager.OnBackStackChagnedListener
udostępnia teraz 2 dodatkowe wywołania zwrotneonBackStackChangeStarted
ionBackStackChangeCommitted
, które umożliwiają przekazanie dodatkowych informacji i kontrolę, kiedy w usłudzeFragmentManager
zachodzą zmiany stosu wstecznej. (Ib7ce5, b/238686802)
Zmiany w interfejsie API
- Interfejsy API
Fragment
iFragmentManager
, które przyjmują wartościIntent
lubIntentSender
, są teraz prawidłowo oznaczone adnotacją@NonNull
, aby zapobiec przekazywaniu wartości null w postaci wartości null, co zawsze powodowałoby awarię odpowiednich interfejsów API platformy Androida wywoływanych przez te metody. (I06fd4)
Wersja 1.6.0-alfa04
7 grudnia 2022 r.
Aplikacja androidx.fragment:fragment-*:1.6.0-alpha04
została zwolniona. Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Element
FragmentStrictMode
dodał nowy elementWrongNestedHierarchyViolation
, który wykrywa, że fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodawany do elementuchildFragmentManager
nadrzędnego. (I72521, b/249299268)
Zmiany w działaniu
- Fragmenty przywracają teraz stan
SavedStateRegistry
przedonAttach()
, co zapewnia, że jest on dostępny we wszystkich metodach cyklu życia. (I1e2b1).
Zmiany w interfejsie API
- Artefakt
fragment-testing-manifest
oddziela wpisy manifestu od pozostałych komponentów testowania fragmentów. Oznacza to, że możesz:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Pozwala to uniknąć konfliktów z powodu odchylenia wersji między fragment-testing
a androidx.test
.(I8e534, b/128612536)
Poprawki błędów
- Z fragmentu
1.5.5
: fragmenty kodu nie będą już nieprawidłowo zapisywać stanuViewModel
w ramach zapisanego stanu rejestru widoków. (I10d2b, b/253546214)
Wersja 1.6.0-alfa03
5 października 2022 r.
Opublikowano androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
i androidx.fragment:fragment-testing:1.6.0-alpha03
. Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zajęcia, które zostaną rozszerzone o
DialogFragment
, będą teraz musiały wywoływać funkcje Super w swoich zastąpieniachonDismiss()
. (I14798, b/238928865)
Poprawki błędów
- Usunięto regresje powodowane przez integrację nowych interfejsów wywołania zwrotnego dostawcy (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
), aby fragmenty zawsze otrzymywały odpowiednie wywołania zwrotne. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Wersja 1.6.0-alfa02
24 sierpnia 2022 r.
Opublikowano androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
i androidx.fragment:fragment-testing:1.6.0-alpha02
. Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Z fragmentu
1.5.2
: naprawiliśmy problem polegający na tym, że jednoczesne wykonanie transakcjipopBackStack()
ireplace()
mogło powodować nieprawidłowe uruchamianie fragmentów na wyjściuAnimation
/Animator
. (Ib1c07, b/214835303)
Wersja 1.6.0-alfa01
27 lipca 2022 roku
Opublikowano androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
i androidx.fragment:fragment-testing:1.6.0-alpha01
. Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.
Zmiany w działaniu
- Zapisany stan komponentów
Fragment
został całkowicie podzielony między stan biblioteki prywatnej (niestandardowe klasyParcelable
) i stan podany przez dewelopera, który jest teraz zawsze przechowywany w elemencieBundle
, który umożliwia dokładne określenie, skąd pochodzi stan fragmentu. (b/207158202)
Poprawki błędów
- Z fragmentu
1.5.1
: popraw regresję wDialogFragmentCallbacksDetector
, gdzie użycie wersji linta dołączonej do AGP 7.4 spowodowałoby awarię lintowania. (b/237567009)
Aktualizacja zależności
- Z fragmentu
1.5.1
: biblioteka Fragment zależy teraz od cyklu życia2.5.1
. (Id204c). - Z fragmentu
1.5.1
: biblioteka Fragment zależy teraz od aktywności1.5.1
. (I10f07).
Wersja 1.5
Wersja 1.5.7
19 kwietnia 2023 r.
Opublikowano androidx.fragment:fragment:1.5.7
, androidx.fragment:fragment-ktx:1.5.7
i androidx.fragment:fragment-testing:1.5.7
. Wersja 1.5.7 zawiera te zatwierdzenia.
Poprawki błędów
- Użycie właściwości
postponeEnterTransition
z limitem czasu, a następnie zastąpienie odłożonego fragmentu, nie skutkuje już wyciekiem odłożonego fragmentu. (I2ec7d, b/276375110)
Wersja 1.5.6
22 marca 2023 r.
Opublikowano androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
i androidx.fragment:fragment-testing:1.5.6
. Wersja 1.5.6 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem, który powodował, że usunięcie dowolnego fragmentu kodu, niezależnie od tego, czy dodało do niego pozycje menu, czy nie, unieważniło menu aktywności. (50f098, b/244336571)
- Rozwiązaliśmy problem, który powodował, że wywołanie metody
clearFragmentResultListener
w obiekciesetFragmentResultListener
nie działało, jeśliLifecycle
miał już wartośćSTARTED
, a wynik był już dostępny. (If7458)
Wersja 1.5.5
7 grudnia 2022 r.
Opublikowano androidx.fragment:fragment:1.5.5
, androidx.fragment:fragment-ktx:1.5.5
i androidx.fragment:fragment-testing:1.5.5
. Wersja 1.5.5 zawiera te zatwierdzenia.
Poprawki błędów
- Fragmenty nie będą już nieprawidłowo zapisywać stanu
ViewModel
w ramach zapisanego stanu rejestru widoków. (I10d2b, b/253546214)
Wersja 1.5.4
24 października 2022 r.
Opublikowano androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
i androidx.fragment:fragment-testing:1.5.4
. Wersja 1.5.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że użycie niestandardowego atrybutu
FragmentController
z hostem, który nie implementuje interfejsu wywołania zwrotnego dostawcy (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) i wywołanie wycofanej funkcji wysyłania, powodowało wysłanie wiadomości do fragmentów podrzędnych. (I9b380)
Wersja 1.5.3
21 września 2022 r.
Opublikowano androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
i androidx.fragment:fragment-testing:1.5.3
. Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że fragmenty w stosie wstecznym zwracały wywołania zwrotne
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
ionConfigurationChanged()
. (I34581, I8dfe6, b/242570955) - Zagnieżdżone fragmenty podrzędne nie będą już otrzymywać wielu wywołań zwrotnych
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
anionConfigurationChanged()
. (I690b3, Id0096, If9d6b, I2cba2)
Wersja 1.5.2
10 sierpnia 2022 r.
Opublikowano androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
i androidx.fragment:fragment-testing:1.5.2
. Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że jednoczesne wykonywanie transakcji
popBackStack()
ireplace()
mogło powodować nieprawidłowe uruchamianie fragmentówAnimation
/Animator
(Ib1c07, b/214835303).
Wersja 1.5.1
27 lipca 2022 roku
Opublikowano androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
i androidx.fragment:fragment-testing:1.5.1
. Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Popraw w
DialogFragmentCallbacksDetector
błąd regresji, w którym użycie wersji lint w pakiecie AGP 7.4 spowodowałoby awarię lintowania. (b/237567009)
Aktualizacja zależności
- Biblioteka Fragment zależy teraz od cyklu życia
2.5.1
. (Id204c). - Biblioteka Fragment zależy teraz od aktywności
1.5.1
. (I10f07).
Wersja 1.5.0
29 czerwca 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
i androidx.fragment:fragment-testing:1.5.0
. Wersja 1.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.4.0
- Integracja dodatku do tworzenia –
Fragment
ma teraz możliwość dostarczania bezstanowego elementuViewModelProvider.Factory
za pomocą funkcjiCreationExtras
w cyklu życia2.5.0
. - Integracja okna komponentów –
DialogFragment
używa terazComponentDialog
za pośrednictwem Aktywności1.5.0
jako domyślnego okna zwracanego przezonCreateDialog()
. - Refaktoryzacja zapisanego stanu instancji – zaczęła się zmieniać sposób zapisywania stanu instancji za pomocą fragmentów kodu. Celem jest ułatwienie wyraźnej identyfikacji stanu zapisanego we fragmencie i źródle stanu. Obecne zmiany:
FragmentManager
zapisuje teraz stan zapisanej instancji w formacieBundle
, a nie bezpośrednio w niestandardowymParcelable
.- Wyniki ustawiane za pomocą
Fragment Result APIs
, które nie zostały jeszcze dostarczone, są teraz zapisywane niezależnie od stanu wewnętrznegoFragmentManager
. - Stan powiązany z poszczególnymi fragmentami jest teraz zapisywany niezależnie od stanu wewnętrznego zasobu
FragmentManager
, co pozwala skorelować ilość zapisanego stanu powiązanego z poszczególnymi fragmentami z unikalnymi identyfikatorami w dzienniku debugowaniaFragment
.
Inne zmiany
FragmentStrictMode
umożliwia teraz używanie prywatnych fragmentów kodu spoza witryny przez użycieallowViolation()
z nazwą klasy w celu ominięcia konkretnych kar za naruszenie zasad.- Interfejsy Fragment API służące do udostępniania menu w sekcji
ActionBar
Twojej aktywności zostały wycofane. Interfejsy APIMenuHost
iMenuProvider
dodane w aktywności1.4.0
zapewniają testową, równoważną powierzchnię interfejsu API, z której powinny korzystać fragmenty.
Wersja 1.5.0-rc01
11 maja 2022 roku
Opublikowano androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
i androidx.fragment:fragment-testing:1.5.0-rc01
. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Refaktoryzacja zapisanego stanu instancji
- Stan powiązany z poszczególnymi fragmentami jest teraz zapisywany niezależnie od stanu wewnętrznego
FragmentManager
, co pozwala skorelować ilość zapisanego stanu powiązanego z poszczególnymi fragmentami z unikalnymi identyfikatorami w logowaniu debugowania fragmentu. (A153e0, b/207158202)
Wersja 1.5.0-beta01
20 kwietnia 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
i androidx.fragment:fragment-testing:1.5.0-beta01
. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
DialogFragment
dodał(a) nową metodędismissNow
, która używacommitNow
do zapewnienia zgodności z funkcjąshowNow
. Pamiętaj, że nie spowoduje to zamknięcia interfejsuDialog
od razu, a jedynie synchronicznie zaktualizuje stan obiektuFragmentManager
. (I15c36, b/72644830)
Refaktoryzacja zapisanego stanu instancji
FragmentManager
zapisuje teraz stan zapisanej instancji w formacieBundle
, a nie bezpośrednio w niestandardowymParcelable
. Jest to pierwszy krok na drodze do zapewnienia większej przejrzystości tego, co rzeczywiście jest zapisywane przez fragmenty kodu. (I93807, b/207158202)- Wyniki ustawione za pomocą interfejsów API wyników z fragmentem, które nie zostały jeszcze dostarczone, są teraz zapisywane oddzielnie od stanu wewnętrznego
FragmentManager
. Dzięki temu uzyskasz lepszy wgląd w to, jakie wyniki są zapisywane w ramach zapisanego stanu instancji. (I6ea12, b/207158202)
Wersja 1.5.0-alfa05
6 kwietnia 2022 roku
Opublikowano androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
i androidx.fragment:fragment-testing:1.5.0-alpha05
. Wersja 1.5.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zasób
setHasOptionsMenu()
(Fragment
) został wycofany. Aby zarządzać menu i ich elementami, użyj nowych interfejsów API menu, zgodnie z informacjami o wersji1.5.0-alpha04
dotyczącymi fragmentu. (I7b4b4, b/226438239)
Wersja 1.5.0-alfa04
23 marca 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0-alpha04
, androidx.fragment:fragment-ktx:1.5.0-alpha04
i androidx.fragment:fragment-testing:1.5.0-alpha04
. Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wycofaliśmy interfejsy API Fragment do udostępniania menu funkcji
ActionBar
Twojej aktywności, ponieważ ściśle łączą Twój fragment z aktywnością i nie można ich testować w oderwaniu. Interfejsy APIMenuHost
iMenuProvider
dodane w aktywności1.4.0-alpha01
zapewniają testową, równoważną powierzchnię interfejsu API, z której powinny korzystać fragmenty. (I50a59, I20758)
Poprawki błędów
SavedStateViewFactory
obsługuje teraz użycieCreationExtras
, nawet jeśli zainicjowano go za pomocąSavedStateRegistryOwner
. W przypadku podania dodatków zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
Wersja 1.5.0-alfa03
23 lutego 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
i androidx.fragment:fragment-testing:1.5.0-alpha03
. Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Możesz teraz przekazywać
CreationExtras
do funkcjiby viewModels()
iby activityViewModels()
. (Ibefe7, b/217601110)
Zmiany w działaniu
DialogFragment
używa terazComponentDialog
jako domyślnego okna dialogowego zwracanego przezonCreateDialog()
. (If3784, b/217618170)
Wersja 1.5.0-alfa02
9 lutego 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
i androidx.fragment:fragment-testing:1.5.0-alpha02
. Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
FragmentStrictMode
umożliwia teraz używanie prywatnych fragmentów kodu spoza witryny przez użycieallowViolation()
z nazwą klasy w celu ominięcia konkretnych kar za naruszenie zasad. (I8f678)
Wersja 1.5.0-alfa01
26 stycznia 2022 r.
Opublikowano androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
i androidx.fragment:fragment-testing:1.5.0-alpha01
. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Fragment
integruje się teraz z funkcją ViewModel CreationExtras w ramach cyklu życia2.5.0-alpha01
. (I3060b, b/207012585)
Poprawki błędów
- Z fragmentu
1.4.1
:FragmentContainerView
nie zgłasza już niedozwolonego wyjątku stanu, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140) - Z fragmentu
1.4.1
: podczas używania niestandardowej lambdaownerProducer
z leniwą funkcjąby viewModels()
będzie ona teraz używaładefaultViewModelProviderFactory
od tego właściciela, jeśli nie podano niestandardowej wartościViewModelProvider.Factory
zamiast zawsze używać fabryki fragmentu. (I56170, b/214106513) - Rozwiązaliśmy problem, który powodował awarię podczas uzyskiwania dostępu do interfejsu
ViewModel
po raz pierwszy z wywołania zwrotnegoregisterForActivityResult()
Fragment
. (Iea2b3).
Wersja 1.4
Wersja 1.4.1
26 stycznia 2022 r.
Opublikowano androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
i androidx.fragment:fragment-testing:1.4.1
. Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
FragmentContainerView
nie zgłasza już wyjątku niezgodnego z prawem, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140)- Podczas używania niestandardowej lambda
ownerProducer
z funkcją leniwegoby viewModels()
będzie ona teraz używała wartościdefaultViewModelProviderFactory
od tego właściciela, jeśli nie podano niestandardowej wartościViewModelProvider.Factory
, a nie zawsze używa fabryki fragmentu. (I56170, b/214106513)
Wersja 1.4.0
17 listopada 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
i androidx.fragment:fragment-testing:1.4.0
. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Interfejsy API
FragmentStrictMode
udostępniają testy środowiska wykonawczego, które umożliwiają sprawdzenie, czy aplikacja lub biblioteki, z których korzystasz, nie wywołują wycofanych interfejsów API fragmentów. Po wykryciu naruszenia możesz wydrukować komunikat dziennika, uruchomić własny detektor lub zawiesić aplikację. ElementFragmentStrictMode.Policy
określający, które kontrole są włączone i karane, można ustawić wFragmentManager
za pomocą nowej metodysetStrictModePolicy()
. Ta zasada obowiązuje w odniesieniu doFragmentManager
i przechodnie do wszystkich menedżerów fragmentów podrzędnych, którzy nie ustawili własnej, niepowtarzalnej zasady. Zobacz StrictMode dla fragmentów. FragmentContainerView
udostępnia teraz metodęgetFragment()
, która zwraca fragment, który został ostatnio dodany do kontenera. Wykorzystuje tę samą logikę co w przypadkufindFragmentById()
z identyfikatorem obiektuFragmentContainerView
, ale umożliwia łańcuch wywołania.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
implementuje terazCloseable
, dzięki czemu możesz używać jej z metodąuse
Kotlina lub spróbować z zasobami.Dodano
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, aby określić, czy chcesz włączyć standardową animację przejścia aktywności pochodzącą z Twojego motywu w przejściu Fragmenty.Eksperymentalny interfejs API
FragmentManager.enableNewStateManager(boolean)
został usunięty. Nowy menedżer stanu jest teraz jedyną dostępną opcją.
Wiele wstecznych stosów
FragmentManager
utrzymuje stos wsteczny składający się z transakcji fragmentowych, które korzystały z addToBackStack()
. Dzięki temu możesz podzielić te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu z fragmentami, co pozwala na odpowiednie przywrócenie stanu fragmentów.
Ta wersja rozszerza te mechanizmy, dodając 3 nowe interfejsy API FragmentManager
: saveBackStack(String name)
, restoreBackStack(String name)
i clearBackStack(String name)
. Te interfejsy API używają tego samego parametru name
co addToBackStack()
, aby zapisywać stan FragmentTransaction
i stan każdego fragmentu dodanego w tych transakcjach. Pozwalają one później przywrócić te transakcje i ich fragmenty z niezmienionym stanem. Dzięki temu można skutecznie „przełączać się” między wieloma stosami wstecznymi, zapisując bieżący stos i przywracając zapisany.
Funkcja saveBackStack()
działa podobnie do popBackStack()
pod tym względem, że jest asynchroniczna i powoduje cofnięcie wszystkich transakcji powiązanych z danym fragmentem („popped”) oraz wszelkie dodane fragmenty do zniszczenia i usunięcia. Różnią się jednak kilkoma istotnymi cechami:
saveBackStack()
uwzględnia zawsze.- W odróżnieniu od metody
popBackStack()
, która powoduje wyskakiwanie wszystkich transakcji w stosie wstecznym, jeśli podanej nazwy nie ma w tylnym stosie lub jeśli podana jest nazwa null,saveBackStack()
nie robi wcześniej, jeśli nie została wcześniej zatwierdzona transakcja obejmująca fragment przy użyciuaddToBackStack()
o takiej samej, niepustej nazwie. - Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że przechowywany jest stan widoku każdego fragmentu, wywoływany jest
onSaveInstanceState()
każdego fragmentu i ten stan zostaje przywrócony, a wszystkie wystąpieniaViewModel
powiązane z tymi fragmentami są zachowywane (a poleonCleared()
nie jest do nich wywoływane).
Transakcje związane z fragmentami, których można użyć z elementem saveBackStack()
, muszą spełniać określone kryteria:
- Każda transakcja dotycząca fragmentu musi korzystać z metody
setReorderingAllowed(true)
, aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację. - Zapisane transakcje muszą być niezależne (tj. nie mogą jednoznacznie odwoływać się do fragmentów spoza tego zbioru transakcji), aby można było je później przywrócić, niezależnie od tego, jakie zmiany zostały wprowadzone w stosie wstecznym w danym okresie.
- Żaden zapisany fragment nie może być fragmentem przechowywanym lub zachowanym w przechodnim zestawie fragmentów podrzędnych, aby zapewnić, że
FragmentManager
nie zwróci żadnych odwołań do zapisanych fragmentów po zapisaniu stosu wstecznego.
Podobnie jak w przypadku funkcji saveBackStack()
, restoreBackStack()
i clearBackStack()
, które przywracają wcześniej zapisany stos wsteczny lub usuwają wcześniej zapisany stos wsteczny, nie działają, jeśli nie wywołano wcześniej funkcji saveBackStack()
o tej samej nazwie.
Więcej informacji znajdziesz w artykule Wiele wstecznych stosów: szczegółowa analiza.
Wersja 1.4.0-rc01
3 listopada 2021 r.
Wersja androidx.fragment:fragment:1.4.0-rc01
została zwolniona bez zmian z fragmentu 1.4.0-beta01. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta01
27 października 2021 roku
Opublikowano androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
i androidx.fragment:fragment-testing:1.4.0-beta01
. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Fragmenty nadrzędne będą teraz wysyłać kod
onHiddenChanged()
w dół całej hierarchii przed uruchomieniem własnego wywołania zwrotnego. (Iedc20, b/77504618) - Klawiatura zamknie się automatycznie przy przechodzeniu z fragmentu z otwartą klawiaturą do fragmentu z widokiem RecyclerView. (I8b842, b/196852211)
DialogFragment
używa teraz polasetReorderingAllowed(true)
we wszystkich transakcjach, które tworzy przy wywołaniu metodyshow()
,showNow()
lubdismiss()
. (Ie2c14).- Bardzo długie ostrzeżenie lint dla
DetachAndAttachFragmentInSameFragmentTransaction
zostało skrócone doDetachAndAttachSameFragment
. (E9eca3)
Wersja 1.4.0-alfa10
29 września 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
i androidx.fragment:fragment-testing:1.4.0-alpha10
. Wersja 1.4.0-alpha10 zawiera te zatwierdzenia.
Lint
- Dodano ostrzeżenie o linie w
DetachAndAttachFragmentInSameFragmentTransaction
przy wykrywaniu wywołań zarównodetach()
, jak iattach()
w tym samym elemencieFragment
w tym samym elemencie:FragmentTransaction
. Operacje uzupełniające anulują się wzajemnie w ramach tej samej transakcji, dlatego muszą zostać podzielone na osobne transakcje, aby w ogóle nie działały. (Aosp/1832956, b/200867930) - Dodano błąd linta
FragmentAddMenuProvider
do poprawiania przypadków użycia cyklu życia fragmentu w widoku cyklu życia fragmentu podczas korzystania z interfejsu APIaddMenuProvider
dlaMenuHost
. (Aosp/1830457, b/200326272)
Aktualizacje dokumentacji
- Komunikat o wycofaniu interfejsów API jest teraz obsługiwany przez interfejsy API wyników związane z aktywnością (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
ionRequestPermissionsResult
) i zawiera więcej szczegółów. (CCE80F) - Komunikat o wycofaniu
onActivityCreated()
w przypadku usługFragment
iDialogFragment
został rozszerzony i zawiera więcej szczegółów. (224db4)
Wersja 1.4.0-alfa09
15 września 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
i androidx.fragment:fragment-testing:1.4.0-alpha09
. Wersja 1.4.0-alpha09 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz wywołać
clearBackStack(name)
, aby wyczyścić każdy stan, który został wcześniej zapisany wsaveBackStack(name)
. (I70cd7)
Zmiany w interfejsie API
- Klasa
FragmentContainerView
została przepisana w Kotlin w celu zapewnienia, że funkcjagetFragment
prawidłowo przestrzega wartości null. (If694a, b/189629145) - Fragment FragmentStrictMode jest teraz zapisany w języku Kotlin (I11767, b/199183506).
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że stan fragmentu dodanego za pomocą
setReorderingAllowed(true)
, a następnie usunięty bezpośrednio przed wykonaniem oczekujących transakcji, nie był prawidłowo czyszczony. (I8ccb8)
Wersja 1.4.0-alfa08
1 września 2021 roku
Opublikowano androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
i androidx.fragment:fragment-testing:1.4.0-alpha08
. Wersja 1.4.0-alpha08 zawiera te zatwierdzenia.
Poprawki błędów
- Ulepszyliśmy funkcję sprawdzania lint
UseRequireInsteadOfGet
, aby lepiej obsługiwać nadmiarowe nawiasy. (I2D865) - Ulepszyliśmy sprawdzanie lint
UseGetLayoutInflater
, aby obsługiwać dodatkowe przypadki skrajne. (Ie5423)
Wersja 1.4.0-alfa07
18 sierpnia 2021 r.
Wersje androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
i androidx.fragment:fragment-testing:1.4.0-alpha07
zostały opublikowane bez istotnych zmian. Wersja 1.4.0-alpha07 zawiera te zatwierdzenia.
Wersja 1.4.0-alfa06
4 sierpnia 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
i androidx.fragment:fragment-testing:1.4.0-alpha06
. Wersja 1.4.0-alpha06 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z wieloma warstwami wstecznymi występującymi w przypadku szybkiego przełączania się między stosami wstecznymi, który był wyświetlany jako
IllegalStateException
podczas przywracaniaFragmentTransaction
lub jako drugiej kopii widocznego fragmentu. (I9039f) - Rozwiązaliśmy problem, który powodował, że
FragmentManager
zachowywał kopię stanu wcześniej zapisanego za pomocąsaveBackStack()
nawet po przywróceniu tego stanu. (Ied212) - Metoda
dismissAllowingStateLoss()
DialogFragment
nie ulega już awarii, gdy wywołujesz ją po zapisaniu stanu podczas dodawania DialogFragment za pomocą metodyshow(FragmentTransaction, String)
. (I84422)
Wersja 1.4.0-alfa05
21 lipca 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
i androidx.fragment:fragment-testing:1.4.0-alpha05
. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
- Z fragmentu
1.3.6
: widok fragmentu jest teraz prawidłowo ustawiony naGONE
przy korzystaniu z elementuhide()
, gdy widok główny ma ustawiony widoktransitionGroup=”true”
. (Aosp/1766655, b/193603427) - Z fragmentu
1.3.6
:FragmentActivity
zawsze odblokowuje zapisany stan, ponieważ jego pierwsza operacja w cyklu życia zastępuje wywołanie zwrotne. (I6db7a)
Aktualizacja zależności
- Z fragmentu
1.3.6
: fragmenty zależą teraz od aktywności1.2.4
(I3a66c)
Wersja 1.4.0-alfa04
30 czerwca 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
i androidx.fragment:fragment-testing:1.4.0-alpha04
. Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Aby zapisać swój stan,
FragmentManager
używa teraz trybuSavedStateRegistry
pod maską. MetodysaveAllState()
irestoreSavedState()
również zostały wycofane wFragmentController
. Jeśli używasz metodyFragmentController
do hostowania fragmentów pozaFragmentActivity
, musisz mieć implementacjęFragmentHostCallbacks
SavedStateRegistryOwner
. (Iba68e, b/188734238)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wywołanie
saveBackStack()
w ramach obsługi wielu stosów wstecznych kończyło się niepowodzeniem, gdy było wykonywane w tym samym czasie co wywołanieFragmentTransaction
, które używałoreplace()
. (I73137) - Poprawiliśmy błąd
NullPointerException
, który występował po ręcznym przywróceniu zapisanego stosu wstecznego, który zawierał wiele transakcji, w przypadku korzystania z interfejsu APIrestoreBackStack()
do obsługi wielu stosu wstecznych. Naprawiliśmy też błąd, który powodował, że funkcjasetReorderingAllowed(true)
nie była sprawdzana pod kątem wszystkich transakcji. (I8c593) - Naprawiono błąd polegający na tym, że
FragmentManager
nieprawidłowo w dalszym ciągu przywracał zapisany wcześniej stan fragmentów nawet po usunięciu tych fragmentów zFragmentManager
, przez co zapisany stan stale zwiększał się z czasem. (I1fb8e)
Wersja 1.4.0-alfa03
16 czerwca 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
i androidx.fragment:fragment-testing:1.4.0-alpha03
. Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Wszystkie klasy Fragment StrictMode
Violation
zostały zaktualizowane o bardziej szczegółowe komunikaty o błędach, które wyjaśniają szczegóły naruszenia. (b/187871638)FragmentTagUsageViolation
zawiera teraz bardziej szczegółowy komunikat o błędzie dotyczący kontenera nadrzędnego, do którego zostałby dodany dany fragment. (Ic33a7)WrongFragmentContainerViolation
zawiera teraz bardziej szczegółowy komunikat o błędzie obejmujący kontener, do którego został dodany dany fragment. (Ib55f8)- Klasy przypadku użycia klasy
TargetFragmentUsageViolation
mają teraz bardziej szczegółowe komunikaty o błędach, aby uwzględnić fragment powodujący naruszenie i wszelkie inne zawarte informacje. (Icc6ac) - Klasy rozszerzające zakres
RetainInstanceUsageViolation
mają teraz bardziej szczegółowe komunikaty o błędach, które zawierają fragment powodujący naruszenie. (I6bd55) FragmentReuseViolation
zawiera teraz bardziej szczegółowy komunikat o błędzie zawierający poprzedni identyfikator fragmentu. (I28ce2)- W
SetUserVisibleHintViolation
można teraz zobaczyć bardziej szczegółowy komunikat o błędzie, który zawiera informację o tym, jak była ustawiona wskazówka dla użytkownika. (Ib2d5f)
Zmiany w działaniu
- Cofnięto ograniczenie dotyczące dzwonienia pod numer
fitsSystemWindows
na urządzeniuFragmentContainerView
– nie powoduje to już awarii aplikacji. (6b8ddd, b/190622202)
Poprawki błędów
- Z fragmentu
1.3.5
: naprawiono regresję w przejściach elementów udostępnionych w Fragmentie1.3.4
przez aosp/1679887. Fragmenty prawidłowo teraz obsługują grupy przejść (ustawione bezpośrednio przeztransitionGroup="true"
lub pośrednio przeztransitionName
lubbackground
), a udostępnione elementy nie będą już generować żądańIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304) - Gdy spróbujesz ukryć usuwany fragment,
FragmentManager
nie będzie już ulegać awarii. (I573dd, b/183634730) - Podczas oceny zmiennej najwyższego poziomu kontrola lintowania
OnCreateDialogIncorrectCallback
nie będzie już powodowała awarii. (0a9efa, b/189967522)
Wersja 1.4.0-alfa02
2 czerwca 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
i androidx.fragment:fragment-testing:1.4.0-alpha02
. Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Gdy logowanie jest włączone w interfejsie
FragmentManager
,FragmentStrictMode
zawsze będzie rejestrować naruszenia, niezależnie od bieżącej zasady trybu ścisłego. (I02df6, b/187872638) FragmentStrictMode
umożliwia teraz wykluczenie określonych klasFragment
z trybu ścisłegoViolation
, co pozwala im pominąć wszelkie kary. (Ib4e5d, b/184786736)Klasa
FragmentStrictMode
Violation
została powiększona o informacje o strukturze na podstawie poszczególnych naruszeń. Dzięki temu możesz sprawdzić, co dokładnie spowodowało naruszenie, oraz sprawdzić fragment naruszający zasady (If5118, b/187871150), każdy elementViolation
zawiera:WrongFragmentContainerViolation
zawiera teraz elementViewGroup
, do którego próbowano dodać elementFragment
. (I83c75, b/187871150)TargetFragmentUsageViolation
został rozszerzony doSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
iGetTargetFragmentRequestCodeUsageViolation
, gdzieSetTargetFragmentUsageViolation
zawiera fragment docelowy i kod żądania. (I741b4, b/187871150)SetUserVisibleHintViolation
zawiera teraz wartość logiczną przekazaną do funkcjisetUserVisibleHint()
. (I00585, b/187871150)FragmentTagUsageViolation
zawiera teraz grupę widoków, do której tag<fragment>
próbował powiększyć fragment.(I5dbbc, b/187871150)FragmentReuseViolation
zawiera teraz unikalny identyfikator poprzedniego wystąpienia klasyFragment
, które spowodowało naruszenie zasad. (I0544d, b/187871150)- Typ naruszenia
RetainInstanceUsageViolation
jest teraz abstrakcyjny i obejmuje 2 podklasy:SetRetainInstanceUsageViolation
iGetRetainInstanceUsageViolation
, które reprezentują 2 przypadki naruszenia typu naruszenia. (Ic81e5, b/187871150)
Zmiany w działaniu
FragmentContainerView
zgłasza teraz wyjątek podczas próby zmiany atrybutufitsSystemWindow
automatycznie lub za pomocą kodu XML. Wstawki powinny być obsługiwane przez widok poszczególnych fragmentów. (Ie6651, b/187304502)
Wersja 1.4.0-alfa01
18 maja 2021 r.
Opublikowano androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
i androidx.fragment:fragment-testing:1.4.0-alpha01
. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
FragmentContainerView
udostępnia teraz metodęgetFragment()
, która zwraca fragment, który został ostatnio dodany do kontenera. Wykorzystuje tę samą logikę co w przypadkufindFragmentById()
z identyfikatorem obiektuFragmentContainerView
, ale umożliwia łańcuch wywołania. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Dodano
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, aby określić, czy chcesz włączyć standardową animację przejścia aktywności pochodzącą z Twojego motywu w przejściu Fragmenty. (I46652)
Wiele wstecznych stosów
FragmentManager
utrzymuje stos wsteczny składający się z transakcji fragmentowych, które korzystały z addToBackStack()
. Dzięki temu możesz podzielić te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu z fragmentami, co pozwala na odpowiednie przywrócenie stanu fragmentów.
Ta wersja rozszerza te mechanizmy, dodając 2 nowe interfejsy API FragmentManager
: saveBackStack(String name)
i restoreBackStack(String name)
. Te interfejsy API używają tego samego parametru name
co addToBackStack()
, aby zapisywać stan FragmentTransaction
i stan każdego fragmentu dodanego w tych transakcjach. Pozwalają one później przywrócić te transakcje i ich fragmenty z niezmienionym stanem. Dzięki temu można skutecznie „przełączać się” między wieloma stosami wstecznymi, zapisując bieżący stos i przywracając zapisany.
Funkcja saveBackStack()
działa podobnie do popBackStack()
pod tym względem, że jest asynchroniczna i powoduje cofnięcie wszystkich transakcji powiązanych z danym fragmentem („popped”) oraz wszelkie dodane fragmenty do zniszczenia i usunięcia. Różnią się jednak kilkoma istotnymi cechami:
saveBackStack()
uwzględnia zawsze.- W odróżnieniu od metody
popBackStack()
, która powoduje wyskakiwanie wszystkich transakcji w stosie wstecznym, jeśli podanej nazwy nie ma w tylnym stosie lub jeśli podana jest nazwa null,saveBackStack()
nie robi wcześniej, jeśli nie została wcześniej zatwierdzona transakcja obejmująca fragment przy użyciuaddToBackStack()
o takiej samej, niepustej nazwie. - Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że przechowywany jest stan widoku każdego fragmentu, wywoływany jest
onSaveInstanceState()
każdego fragmentu i ten stan zostaje przywrócony, a wszystkie wystąpieniaViewModel
powiązane z tymi fragmentami są zachowywane (a poleonCleared()
nie jest do nich wywoływane).
Transakcje związane z fragmentami, których można użyć z elementem saveBackStack()
, muszą spełniać określone kryteria:
- Każda transakcja dotycząca fragmentu musi korzystać z metody
setReorderingAllowed(true)
, aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację. - Zapisane transakcje muszą być niezależne (tj. nie mogą jednoznacznie odwoływać się do fragmentów spoza tego zbioru transakcji), aby można było je później przywrócić, niezależnie od tego, jakie zmiany zostały wprowadzone w stosie wstecznym w danym okresie.
- Żaden zapisany fragment nie może być fragmentem przechowywanym lub zachowanym w przechodnim zestawie fragmentów podrzędnych, aby zapewnić, że
FragmentManager
nie zwróci żadnych odwołań do zapisanych fragmentów po zapisaniu stosu wstecznego.
Podobnie jak saveBackStack()
, restoreBackStack()
nie działa, jeśli funkcja saveBackStack()
nie została wcześniej wywołana o tej samej nazwie. (b/80029773)
Fragment StrictMode
Interfejsy API FragmentStrictMode
udostępniają testy środowiska wykonawczego, które umożliwiają sprawdzenie, czy aplikacja lub biblioteki, z których korzystasz, nie wywołują wycofanych interfejsów API fragmentów. Po wykryciu naruszenia możesz wydrukować komunikat dziennika, uruchomić własny detektor lub zawiesić aplikację. Element FragmentStrictMode.Policy
określający, które kontrole są włączone i karane, można ustawić w FragmentManager
za pomocą nowej metody setStrictModePolicy()
. Ta zasada obowiązuje w odniesieniu do FragmentManager
i przechodnie do wszystkich menedżerów fragmentów podrzędnych, którzy nie ustawili własnej, niepowtarzalnej zasady. (#123, #131, #150, b/143774122)
detectFragmentReuse()
wykrywa, czy usunięta wcześniej instancjaFragment
jest ponownie dodawana do instancjiFragmentManager
. Po zniszczeniu instancjiFragment
i usunięciu jej z instancjiFragmentManager
nie wolno nigdy korzystać z niej ani zachowywać odniesienia do niej. (#142, b/153738653)detectFragmentTagUsage()
wykrywa, kiedy używasz tagu<fragment>
w kodzie XML układu. Gdy nadmiarujesz fragmenty w ramach układu, zawsze używaj poleceniaFragmentContainerView
. (#141, b/153738235)detectWrongFragmentContainer()
wykrywa, że do kontenera został dodany fragment, który nie jest elementemFragmentContainerView
. Jako kontenera fragmentów w układzie należy zawsze używać narzędziaFragmentContainerView
. (#146, b/181137036)detectRetainInstanceUsage()
wykrywa, kiedy używasz wycofanych interfejsów APIsetRetainInstance()
lubgetRetainInstance()
. (#140, b/153737954)detectSetUserVisibleHint()
wykrywa, kiedy używasz wycofanego interfejsu APIsetUserVisibleHint()
. (#136, b/153738974)detectTargetFragmentUsage()
wykrywa, kiedy używasz wycofanych interfejsów APIsetTargetFragment()
,getTargetFragment()
lubgetTargetRequestCode()
. (#139, b/153737745)
Zmiany w interfejsie API
- Eksperymentalny interfejs API
FragmentManager.enableNewStateManager(boolean)
został usunięty. Nowy menedżer stanu jest teraz jedyną dostępną opcją. (I90036, b/162776418) FragmentScenario
implementuje terazCloseable
, dzięki czemu możesz używać jej z metodąuse
Kotlina lub spróbować z zasobami. (#121, b/143774122)
Nowe testy Lint
- Sprawdzanie Lint (
UseGetLayoutInflater
) ostrzega, gdy używaszLayoutInflater.from(Context)
w obrębieDialogFragment
– aby uzyskać właściwą wartośćLayoutInflater
, zawsze używaj metodygetLayoutInflater()
fragmentu okna. (#156, b/170781346) - Sprawdzanie pod kątem Lint (
DialogFragmentCallbacksDetector
) ostrzega teraz, gdy wywołuje metodęsetOnCancelListener
lubsetOnDismissListener
w metodzieonCreateDialog()
DialogFragment
– odbiorniki są własnością samej instancjiDialogFragment
i aby otrzymywać te wywołania zwrotne, musisz zastąpić wartościonCancel()
ionDismiss()
. (#171, b/181780047, b/187524311)
Poprawki błędów
- Od fragmentu 1.3.4: naprawiono regresję wprowadzona w Fragmentie
1.3.3
podczas korzystania z interfejsu APIViewTreeViewModelStoreOwner.get()
zViewModelProvider
lub metody Jetpack Compose zviewModel()
we fragmencie. Te przypadki użycia teraz prawidłowo korzystają z parametruViewModelProvider.Factory
podanego przez fragment kodu, jeśli zastępuje ongetDefaultViewModelProviderFactory()
(tak jak robią to fragmenty z adnotacjami@AndroidEntryPoint
w przypadku korzystania z Hilt). Jeśli nie zastąpisz tej metody,SavedStateViewModelFactory
, który zapisuje i przywraca swój stan obok widoku fragmentu, zostanie utworzony jako domyślna fabryka. (I5cbfa, b/186097368) - Z fragmentu 1.3.4: podczas korzystania z
FragmentContainerView
w interfejsie API 29 wstawienia nie będą wysyłane w nieskończoność, co rozwiąże problemy z instancjamiBottomNavigationBar
iFloatingActionButton
. (I1bb78, b/186012452) - Z fragmentu 1.3.4: możesz teraz pobrać obiekt Parcelable z pakietu wyników fragmentów po śmierci procesu. (I65932, b/187443158)
- Od fragmentu 1.3.4: podczas wykonywania przejścia elementu wspólnego w grupie widoków danych, a jego parametr
transitionGroup
ma wartość Fałsz, następuje teraz prawidłowo. (I99675)
Wkład z zewnątrz
- Dziękujemy, simonschiller za wdrożenie
Closeable
dlaFragmentScenario
. (#121, b/143774122) - Dziękujemy, simonschiller za dodanie całego interfejsu API
FragmentStrictMode
w tej wersji. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, b/153} - Dziękujemy, tatocaster za dodanie kontroli lint (
UseGetLayoutInflater
). (#156, b/170781346) - Dziękujemy, tatocaster za dodanie kontroli lint (
DialogFragmentCallbacksDetector
). (#171, b/181780047)
Wersja 1.3
Wersja 1.3.6
21 lipca 2021 r.
Opublikowano androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
i androidx.fragment:fragment-testing:1.3.6
. Wersja 1.3.6 zawiera te zatwierdzenia.
Poprawki błędów
- Z Fragmentu
1.4.0-alpha03
: gdy spróbujesz ukryć usuwany fragment,FragmentManager
nie będzie już ulegać awarii. (I573dd, b/183634730) - Widok fragmentu jest teraz prawidłowo ustawiony na
GONE
podczas korzystania z elementuhide()
, gdy widok główny ma ustawiony parametrtransitionGroup=”true”
. (Aosp/1766655, b/193603427) - Obecnie
FragmentActivity
zawsze odblokowuje zapisany stan, ponieważ jego pierwsza operacja w cyklu życia powoduje zastąpienie go przez wywołania zwrotne. (I6db7a)
Aktualizacja zależności
- Z fragmentu
1.3.6
: fragmenty zależą teraz od aktywności1.2.4
(I3a66c)
Wersja 1.3.5
16 czerwca 2021 r.
Opublikowano androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
i androidx.fragment:fragment-testing:1.3.5
. Wersja 1.3.5 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy regresję w przejściach elementów wspólnych wprowadzonych we Fragmentie
1.3.4
przez aosp/1679887. Fragmenty prawidłowo teraz obsługują grupy przejść (ustawione bezpośrednio przeztransitionGroup="true"
lub pośrednio przeztransitionName
lubbackground
), a udostępnione elementy nie będą już generować żądańIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304)
Wersja 1.3.4
18 maja 2021 r.
Opublikowano androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
i androidx.fragment:fragment-testing:1.3.4
. Wersja 1.3.4 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono regresję wprowadzoną we fragmencie Fragment
1.3.3
podczas korzystania z interfejsu APIViewTreeViewModelStoreOwner.get()
z elementemViewModelProvider
lub metodyviewModel()
w Jetpack wewnątrz fragmentu podczas korzystania z Hilt. Te przypadki użycia teraz prawidłowo używają poleceniaViewModelProvider.Factory
dostarczonego przez fragment kodu, jeśli zastępuje ongetDefaultViewModelProviderFactory()
(tak jak robią to fragmenty z adnotacjami@AndroidEntryPoint
). Jeśli nie zastąpisz tej metody,SavedStateViewModelFactory
, który zapisuje i przywraca swój stan obok widoku fragmentu, zostanie utworzony jako domyślna fabryka. (I5cbfa, b/186097368) - Gdy używasz
FragmentContainerView
w interfejsie API 29, wstawki nie będą już wysyłane w nieskończoność, co rozwiąże problemy z instancjamiBottomNavigationBar
iFloatingActionButton
. (I1bb78, b/186012452) - Możesz teraz pobrać interfejs Parcelable z pakietu wyników fragmentów po śmierci procesu. (I65932, b/187443158)
- Jeśli podczas wykonywania przejścia elementu wspólnego w grupie widoków danych parametr
transitionGroup
ma wartość false (fałsz), przeniesienie zostanie zakończone poprawnie. (I99675)
Wersja 1.3.3
21 kwietnia 2021 r.
Opublikowano androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
i androidx.fragment:fragment-testing:1.3.3
. Wersja 1.3.3 zawiera te zatwierdzenia.
Nowe funkcje
- Użycie właściwości
SavedStateViewModelFactory
działa teraz w przypadku użycia z wartościąSavedStateRegistryOwner
zwracaną przez metodęViewTreeSavedStateRegistryOwner.get()
w widoku fragmentu. (I21acf, b/181577191)
Poprawki błędów
- Naprawiliśmy regresję wprowadzoną we fragmentie
1.3.2
, która powodowała, że animacjepopEnter
nie były uruchamiane podczas wywoływania funkcjiFragmentTransaction
zawierającej operacjęsetPrimaryNavFragment
, taką jak te używane przezNavHostFragment
. (I38c87, b/183877426) FragmentContainerView
teraz gwarantuje, że każdy elementFragment
będzie wysyłać nowy zbiór obiektówWindowInsets
, dzięki czemu każdy fragment może teraz niezależnie korzystać z wbudowań. (I63f68, b/172153900)DialogFragment
teraz prawidłowo obsługuje przypadki, gdy fragment podrzędny jest dodawany do kontenera o tym samym identyfikatorze co kontener w niestandardowej klasieDialog
. Rozwiązuje to problemy z hierarchią widoków podczas ponownego używania identyfikatorów używanych wewnętrznie przez okna takie jakBottomSheetDialog
. (Ie6279, b/180021387)FragmentManager.dump()
teraz prawidłowo wcina pierwszy fragment na liście aktywnych fragmentów. (If5c33, b/183705451)
Nowe poprawki błędów Menedżera stanu
- Nowy menedżer stanu fragmentu prawidłowo obsługuje teraz przejścia wyjścia z operacjami ukrywania. (I9e4de, b/184830265)
Wersja 1.3.2
24 marca 2021 r.
Opublikowano androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
i androidx.fragment:fragment-testing:1.3.2
. Wersja 1.3.2 zawiera te zatwierdzenia.
Nowe poprawki błędów Menedżera stanu
- Gdy wykonasz jednocześnie operacje
popBackStack()
icommit()
, ostatnia operacja ustawi kierunek dla wszystkich animacji zamiast używania niektórych animacji pop i animacji Enter. (I7072e, b/181142246) - Widoki w hierarchii wspólnych elementów nie będą już miały wyczyszczonej nazwy przejścia podczas wykonywania przejścia z elementu wspólnego. (I4d4a6, b/179934757)
Aktualizacje zależności
- Fragment zależy teraz od aktywności 1.2.2. Naprawiono problem z sprawdzaniem lint
InvalidFragmentVersionForActivityResult
aktywności przy korzystaniu z fragmentu w wersji 1.3.1 lub nowszej. - Fragment zależy teraz od cyklu życia 2.3.1.
Wersja 1.3.1
10 marca 2021 r.
Opublikowano androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
i androidx.fragment:fragment-testing:1.3.1
. Wersja 1.3.1 zawiera te zatwierdzenia.
Nowe funkcje
- Okna w obiekcie
DialogFragment
mogą teraz uzyskać dostęp do właścicieli ViewTree za pomocą ich interfejsu DecorView, dzięki czemuDialogFragment
może być używany z elementemComposeView
. (Ib9290, b/180691023)
Poprawki błędów
- Fragmenty pobrane za pomocą działania typu
RESUMED
za pomocą FragmentContainerView są teraz wyświetlane prawidłowo po zmianie konfiguracji. (Ie14c8, b/180538371) - Nie ma już dodatkowego znaku
}
na końcu fragmentutoString()
(I54705, b/177761088) - Zastąpione metody w FragmentActivity prawidłowo dziedziczą metodę podstawową javaDoc (I736ce, b/139548782).
- W dokumentacji dotyczącej parametrów
setFragmentResult
isetFragmentResultListener
zaktualizowaliśmy dokumentację dotyczącą parametrów, aby zaznaczyć, że nie akceptują już one wartości null (I990ba, b/178348386).
Nowe poprawki błędów Menedżera stanu
- Naprawiono wyciek pamięci we fragmentach spowodowanych przez
mFocusedView
(Ib4e9e, b/179925887) - Fragmenty kodu teraz poprawnie wywołują
onCreateOptionsMenu
podczas korzystania z funkcji pokazywania/ukrywania transakcji (I8bce8, b/180255554). - Fragmenty podrzędne z przejściami, które zaczynają się przed rozmieszczeniem fragmentu, będą teraz prawidłowo docierać do lokalizacji
RESUMED
(Ic11e6, b/180825150) - Fragmenty pobrane za pomocą tagu
<fragment>
będą teraz zawsze znajdować się w postaciRESUMED
(I452ac, (I9fa49)
Aktualizacje zależności
- Fragment 1.3.1 zależy od aktywności
1.2.1
. (I557b9)
Wersja 1.3.0
10 lutego 2021 r.
Opublikowano androidx.fragment:fragment:1.3.0
, androidx.fragment:fragment-ktx:1.3.0
i androidx.fragment:fragment-testing:1.3.0
. Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Nowy menedżer stanu: znaczne przeredagowanie kodu wewnętrznego
FragmentManager
rozwiązało wiele problemów z wysyłaniem zdarzeń cyklu życia, animacji i przejścia, a także obsługi odłożonych fragmentów. Integracja interfejsu Activity Result API: dodaliśmy obsługę interfejsu API
ActivityResultRegistry
wprowadzonego w aktywności1.2.0
, aby umożliwić obsługę przepływówstartActivityForResult()
+onActivityResult()
irequestPermissions()
+onRequestPermissionsResult()
bez zastępowania metod z fragmentu kodu, a także zapewnienie haków do testowania tych przepływów. Zobacz zaktualizowany Uzyskiwanie wyników z aktywności.- W tej wersji rozwiązaliśmy kilka problemów związanych z nieprawidłowymi kodami żądań i wysyłaniem żądań uprawnień, które uniemożliwiają działanie interfejsu Activity Result API w poprzednich wersjach systemu
FragmentActivity
. Aby korzystać z interfejsów API wyników związanych z aktywnością wFragmentActivity
lubAppCompatActivity
, musisz uaktualnić fragment do wersji 1.3.0.
- W tej wersji rozwiązaliśmy kilka problemów związanych z nieprawidłowymi kodami żądań i wysyłaniem żądań uprawnień, które uniemożliwiają działanie interfejsu Activity Result API w poprzednich wersjach systemu
Fragment interfejsu API wyników: dodano obsługę przekazywania wyników między dwoma fragmentami przy użyciu nowych interfejsów API w interfejsie
FragmentManager
. Sprawdza się to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), elementów DialogFragments i fragmentów w nawigacji oraz daje pewność, że wyniki będą wysyłane do Twojego fragmentu Fragment, gdy ma on co najmniejSTARTED
. Interfejsy API fragmentów docelowych zostały wycofane i zastąpione nowymi. Zobacz Uzyskiwanie wyników za pomocą interfejsu Fragment Result API.FragmentOnAttachListener
: wywołanie zwrotneonAttachFragment()
dlaFragmentActivity
iFragment
zostało wycofane. Został dodany nowy elementFragmentOnAttachListener
, który zapewnia bardziej elastyczną alternatywę, umożliwiając delegowanie uprawnieńonAttachFragment()
do rozdzielania, testowanych detektorów i obsługę dodawania detektora do obiektów FragmentManagers innych niż bezpośredni podrzędny element FragmentManager.FragmentScenario
Usprawnienia: klasaFragmentScenario
z artefaktufragment-testing
została napisana w Kotlin i otrzymała szereg ulepszeń:FragmentScenario
używa terazsetMaxLifecycle()
do implementacjimoveToState()
, zapewniając spójne działanie na wszystkich poziomach interfejsu API i odłączając stan fragmentu od bazowej aktywności.FragmentScenario
obsługuje teraz ustawienie początkowegoLifecycle.State
, aby obsługiwać potwierdzanie stanu fragmentu przed pierwszym przejściem do każdego z elementówLifecycle.State
.- Alternatywą dla interfejsu API
FragmentScenario
onFragment
jest teraz metoda zreformowanego rozszerzenia KotlinwithFragment
, która pozwala zwrócić wartość. W szczególności dodaje ona wyjątki wskazane w danym bloku.
Obsługa
ViewTree
:Fragment
obsługuje teraz interfejsy APIViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
iViewTreeSavedStateRegistryOwner
dodane w sekcjach Cykl życia2.3.0
i SavedState1.1.0
, dzięki czemu podczas korzystania z elementuFragment
zwracany jest fragmentViewModelStoreOwner
, aSavedStateRegistryOwner
iLifecycleOwner
powiązane z cyklem życia fragmentu w obrębieFragment
.View
Zmiana animacji
TRANSIT_
: domyślne efekty fragmentu –TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
iTRANSIT_FRAGMENT_FADE
– teraz używane są terazAnimator
zamiastAnimation
. Zasoby używane do tworzenia tych animatorów są teraz prywatne.Wycofanie funkcji
setRetainInstance()
: metodasetRetainInstance()
we fragmentach adresów została wycofana. Dzięki wprowadzeniu ViewModels deweloperzy mają własny interfejs API umożliwiający zachowywanie stanu, który można powiązać z aktywnościami, fragmentami kodu i wykresami nawigacyjnymi. Dzięki temu deweloperzy mogą używać normalnego, niezachowanego fragmentu i oddzielać konkretny stan, który chcą zachować. Pozwala to uniknąć wspólnego źródła wycieków, a jednocześnie zachować przydatne właściwości pojedynczego utworzenia i zniszczenia przechowywanego fragmentu (tj. konstruktoraViewModel
i otrzymywanego przez niego wywołania zwrotnegoonCleared()
).Wycofanie adaptera ViewPager 1: wraz z udostępnieniem modelu ViewPager2
1.0.0
klasyFragmentPagerAdapter
iFragmentStatePagerAdapter
dotyczące interakcji zViewPager
zostały wycofane. Zapoznaj się z artykułem Migracja z ViewPager do ViewPager2.
Wersja 1.3.0-rc02
27 stycznia 2021 r.
Opublikowano androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
i androidx.fragment:fragment-testing:1.3.0-rc02
. Wersja 1.3.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że po zmianie konfiguracji element nadrzędny
DialogFragment
był wyświetlany nad elementem podrzędnymDialogFragment
. Fragmenty okien podrzędnych są teraz zawsze widoczne nad fragmentem okna nadrzędnego. (I30806, b/177439520) - Rozwiązaliśmy problem polegający na tym, że wykonanie operacji
hide
z użyciemAnimation
powodowało, że fragment ukrywający migał na końcu animacji. (I57e22, b/175417675) - Fragmenty z przejściami dodanymi przed dołączeniem hierarchii widoków teraz poprawnie docierają do zakresu
RESUMED
. (I1fc1d, b/177154873)
Nowe poprawki błędów Menedżera stanu
- Widok
Lifecycle
fragmentu teraz prawidłowo obsługuje przypadki, w których widok fragmentu zostaje zniszczony, zanimLifecycle
osiągnie wartośćCREATED
, co pozwala uniknąć wyjątków z opisem „brak zdarzeń w przypadku INITIALIZED”. (eda2bd, b/176138645) - Podczas korzystania z elementu
FragmentContainerView
fragmenty z atrybutemAnimator
wyświetlają się teraz w odpowiedniej kolejności. (Id9aa3, b/176089197)
Wersja 1.3.0-rc01
16 grudnia 2020 roku
Opublikowano androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
i androidx.fragment:fragment-testing:1.3.0-rc01
. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Parametr
onPrepareOptionsMenu()
działa teraz tak samo jak elementonCreateOptionsMenu()
i nie jest już wywoływany, gdy fragment nadrzędny wywołuje metodęsetMenuVisibility(false)
. (Id7de8, b/173203654)
Nowe poprawki błędów Menedżera stanu
- Naprawiliśmy wyciek i artefakt wizualny podczas dodawania fragmentu z elementem
Animation
do elementuFragmentContainerView
, a następnie przerywania tego działania za pomocą operacji pop. (I952d8) - Naprawiono problem polegający na tym, że widok fragmentu pozostawał w hierarchii widoków, jeśli został zastąpiony podczas korzystania z metod
onCreate()
lubonViewCreated()
. (I8a7d5) - Po wznowieniu fokus jest teraz prawidłowo przywracany do widoków głównych Fragmentu. (Ifc84b)
- Połączenie operacji „pop” i „zastąp” w tej samej transakcji fragmentu spowoduje teraz wyświetlenie prawidłowych animacji (Ifd4e4, b/170328691).
Wersja 1.3.0-beta02
Grudzień 2, 2020
Opublikowano androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
i androidx.fragment:fragment-testing:1.3.0-beta02
. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Usługa
FragmentScenario
została w pełni przekonwertowana na Kotlin z zachowaniem zgodności ze źródłem i plikiem binarnym przez wykorzystanie funkcjonalnych interfejsów Kotlin 1.4 wFragmentAction
. (I19d31).
Zmiany w działaniu
- Obiekty FragmentContainerView, które nie zwiększają fragmentu za pomocą atrybutu
class
lubandroid:name
, mogą być teraz używane poza obiektemFragmentActivity
. (Id4397, b/172266337) - Próba ustawienia maksymalnego cyklu życia fragmentu na
DESTROYED
spowoduje teraz zgłoszenie błęduIllegalArgumentException
(Ie7651, b/170765622) - Inicjowanie obiektu FragmentScenariusz ze stanem
DESTROYED
spowoduje zgłoszenie błęduIllegalArgumentException
(I73590, b/170765622)
Nowe poprawki błędów Menedżera stanu
- Naprawiono błąd, który powodował, że widok nie osiągał ostatecznego stanu w przypadku przerwania przejścia fragmentu przy użyciu metody
Animator
lub jednej z opcjiTRANSIT_FRAGMENT_
. (I92426, b/169874632) - Naprawiono błąd, który uniemożliwiał prawidłowe zniszczenie fragmentów z wyjściem
Animation
. (I83d65) - Wyjście z fragmentami, których efekty zostały odwrócone, prawidłowo anuluje się i uruchomi ponownie z odpowiednim efektem wejścia. (I62226, b/167092035)
- Rozwiązaliśmy problem, który powodował, że wyjście
Animator
zhide()
nie działało. (Id7ffe). - Fragmenty wyświetlają się teraz prawidłowo, gdy zostaną przełożone, i uruchomione natychmiast. (Ie713b, b/170022857)
- Fragmenty, które w trakcie animacji usuwają aktywny widok, nie będą już próbować przywrócić zaznaczenia tego widoku po osiągnięciu wartości
RESUMED
(I38c65, b/172925703)
Wkład z zewnątrz
FragmentFactory
przechowuje teraz w pamięci podręcznej klasy fragmentów oddzielnie dla różnych instancjiClassLoader
. Dziękuję, Simon Schiller! (#87, b/113886460)
Wersja 1.3.0-beta01
1 października 2020 roku
Opublikowano androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
i androidx.fragment:fragment-testing:1.3.0-beta01
. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
setMaxLifecycle()
obsługuje teraz ustawianie stanuLifecycle
naINITIALIZING
, o ile fragment nie został przeniesiony doCREATED
. (b/159662173)
Zmiany w interfejsie API
- Uaktualnij Androidax, aby używać Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Zmiany w działaniu
- Pliki zasobów z fragmentem zostały prawidłowo ustawione jako prywatne. (Aosp/1425237)
Poprawki błędów
- Fragmenty powiększone za pomocą tagu
<fragment>
będą teraz prawidłowo czekać, aż ich widoki danych zostaną dodane do kontenera, i przeniosą je do STARTED (I02f4c). - Fragmenty, które są widoczne, a potem od
setMaxLifecycle()
doCREATED
, teraz prawidłowo uruchamiają efekty wyjścia. (b/165822335) - Usunięcie odłączonego fragmentu, który nie został dodany do stosu, nie powoduje już wycieku pamięci. Dzięki uprzejmości Nicklasa Ansmana Giertza. (b/166489383)
- Aktywne fragmenty będą teraz zawsze mieć niepustą wartość
FragmentManager
, a fragmenty z niepustą wartościąFragmentManager
będą zawsze uznawane za aktywne. (Aosp/1422346) - Domyślne efekty fragmentów (
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
iTRANSIT_FRAGMENT_FADE
) używają terazAnimator
zamiastAnimation
. (b/166155034)
Nowe poprawki błędów Menedżera stanu
- Teraz prawidłowo przywracają one stan zaznaczenia przed rozpoczęciem animacji. (Icc256)
- Fragmenty z jedynym wspólnym przejściem elementów teraz prawidłowo kończą swoje efekty specjalne, co oznacza, że przechodzą do stanu końcowego (Iaebc7, b/166658128)
- Widoki fragmentów są teraz zawsze usuwane z kontenera przed zniszczeniem. (Id5876)
- Nowy menedżer stanu konsekwentnie usuwa teraz zamknięty widok fragmentu przed dodaniem nowego. (I41a6e).
- Jawne zmiany w widoczności widoku fragmentu są teraz uwzględniane przez nowego menedżera stanu. Oznacza to, że jeśli przed rozpoczęciem animacji ustawisz widok fragmentu na
INVISIBLE
, pozostanie on niewidoczny. (b/164481490) - Fragmenty mają teraz wyższy priorytet niż
Animators
, a nieAnimations
, co oznacza, że fragment zawierający oba typy będzie uruchamiał tylko funkcjęAnimator
i ignorowałAnimation
. (b/167579557) - Nowy menedżer stanu nie powoduje już migania fragmentów podczas wprowadzania animacji. (b/163084315)
Znany problem
Jeśli podczas używania nowego menedżera stanu naciśniesz Wstecz podczas wprowadzania efektu specjalnego, zamiast wracać do poprzedniego fragmentu, stary fragment nie zostanie nigdy ponownie dodany, co spowoduje wyświetlenie pustego ekranu. (b/167259187, b/167092035, b/168442830)
Wersja 1.3.0-alfa08
19 sierpnia 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
i androidx.fragment:fragment-testing:1.3.0-alpha08
. Wersja 1.3.0-alpha08 zawiera te zatwierdzenia.
Nowy menedżer stanu
Ta wersja zawiera poważną refaktoryzację wewnętrznego zarządzania stanem w FragmentManager
, która wpływa na realizację metod cyklu życia, animacji i przejścia oraz sposób obsługi odłożonych transakcji. Ta opcja jest domyślnie włączona. Więcej informacji znajdziesz w tym poście na blogu Fragments: Rebuilding the Internals (Fragmenty: odbudowanie zasobów wewnętrznych). (b/139536619, b/147749580)
- Eksperymentalny interfejs API w
FragmentManager.enableNewStateManager(boolean)
może być używany do kontrolowania, czy FragmentManager używa nowego menedżera stanu. (I7b6ee)
Te problemy można rozwiązać tylko przy użyciu nowego menedżera stanu:
- Poprzedni fragment operacji
replace
jest teraz prawidłowo zatrzymany przed rozpoczęciem nowego fragmentu. (b/161654580) - Fragmenty uniemożliwiają teraz wyświetlanie wielu konkurujących ze sobą animacji w tych samych fragmentach. Pozwala to uniknąć sytuacji, w których element
Animation
zastąpiłby wszystkie efektyTransition
lub działałbyAnimator
iTransition
w danym fragmencie. (b/149569323) - Parametry
enterTransition
iexitTranstion
wszystkich otwierających i wychodzących fragmentów są teraz uruchamiane, a nie tylko ostatni fragment otwierający i pierwszy wychodzący fragment. (b/149344150) - Przełożone fragmenty nie zatrzymują się już w stanie
CREATED
, ale zamiast tego są przenoszone doSTARTED
z innymi fragmentami. (b/129035555) - Rozwiązaliśmy problem, który powodował, że
FragmentManager
wykonywał operacje w niewłaściwej kolejności, gdy łączyło odroczoną transakcję ponownie z transakcją nieuporządkowaną. (b/147297731) - Pokazywanie wielu fragmentów jednocześnie nie spowoduje, że fragmenty pośrednie będą tymczasowo widoczne podczas odkładania fragmentów. (b/37140383)
- Funkcja
FragmentManager
zwraca teraz poprawne fragmenty podczas wywoływania funkcjifindFragmentById()
lubfindFragmentByTag()
z wywołania zwrotnegoonAttachFragment()
. (b/153082833) - Fragmenty nie wywołują już wywołania
onCreateView()
w przypadku zniszczonych fragmentów, gdy zostanie przełożony fragment, który je zastępuje. (b/143915710) - Komunikat o błędzie wyświetlany podczas próby połączenia instancji platformy
Transition
i Androida XTransition
wspomina teraz o fragmentie z nieprawidłowym przejściem. (b/155574969)
Zmiany w działaniu
- Możesz teraz wywołać
launch()
wActivityResultLauncher
w metodzie cyklu życia fragmentuonCreate()
. (b/161464278) - Wywołanie metody
registerForActivityResult()
po zmianie metodyonCreate()
powoduje teraz zgłoszenie wyjątku wskazujące, że jest to niedozwolone, zamiast dyskretnego niedostarczenia wyników po zmianie konfiguracji. (b/162255449) FragmentActivity
używa teraz interfejsu APIOnContextAvailableListener
wprowadzonego w aktywności1.2.0-alpha08
do przywracania stanuFragmentManager
. Wszystkie detektory dodane do podklas modeluFragmentActivity
będą uruchamiane po tym detektorze. (I513da)
Poprawki błędów
- Kontrola
ActivityOptions
podczas korzystania zstartIntentSenderForResult()
jest teraz respektowana. (b/162247961)
Znany problem
- Gdy używasz nowego menedżera stanu, bezpośrednie ustawienie widoczności widoku głównego fragmentu po
onViewCreated()
i przedonResume()
powoduje, że ustawiona przez Ciebie widoczność zostanie zastąpiona przezFragmentManager
, który kontroluje widoczność widoku głównego. Aby obejść ten problem, zawsze używaj operacjihide()
ishow()
do zmiany widoczności fragmentu. (b/164481490)
Wersja 1.3.0-alfa07
22 lipca 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
i androidx.fragment:fragment-testing:1.3.0-alpha07
. Wersja 1.3.0-alpha07 zawiera te zatwierdzenia.
Nowe funkcje
- W
FragmentScenario
można teraz ustawiać początkowy stan cyklu życia naCREATED
,STARTED
lubRESUMED
zamiast zawsze przenosić fragment do stanuRESUMED
. (b/159662750) - Dodano alternatywę do interfejsu API
FragmentScenario
onFragment
w postaci metody zreformowanego rozszerzenia KotlinwithFragment
, która pozwala zwrócić wartość. W szczególności dodaje ona wyjątki wskazane w danym bloku. (b/158697631)
Zmiany w działaniu
FragmentScenario
używa terazsetMaxLifecycle()
do implementacjimoveToState()
, zapewniając spójne działanie na wszystkich poziomach interfejsu API i odłączając stan fragmentu od bazowej aktywności. (b/156527405)- Wartość
SavedStateRegistryOwner
zwrócona przez usługęViewTreeSavedStateRegistryOwner
jest teraz powiązana z cyklem życia widoku fragmentu. Dzięki temu jego stan zostanie zapisany i przywrócony w tym samym czasie co widok fragmentu. (b/158503763)
Poprawki błędów
- Fragmenty czekają teraz na dołączenie widoku fragmentu przed wywołaniem funkcji
ViewCompat.requestApplyInsets()
. Pozwala to uniknąć pomijania żądań wstawionych. (b/158095749) - Wywołanie
clearFragmentResultListener
teraz prawidłowo czyści obserwator cyklu życia. (b/159274993)
Wersja 1.3.0-alfa06
10 czerwca 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
i androidx.fragment:fragment-testing:1.3.0-alpha06
. Wersja 1.3.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Wywołanie zwrotne
onAttachFragment()
dotyczące parametrówFragmentActivity
iFragment
zostało wycofane. Dodaliśmy nowyFragmentOnAttachListener
, który zapewnia bardziej elastyczną alternatywę, umożliwiając delegowanie uprawnieńonAttachFragment()
do rozdzielania, testowanych detektorów oraz obsługę dodawania detektora do obiektów FragmentManagers innych niż bezpośredni element podrzędny FragmentManager. (I06d3d).
Poprawki błędów
- Fragmenty nadrzędne są teraz przywracane do stanu wyświetlania przed fragmentami podrzędnymi, co rozwiązuje problem z wizualną kolejnością elementów po zmianie konfiguracji, gdy element
DialogFragment
pokazuje inny elementDialogFragment
jako fragment podrzędny. (b/157195715) - Rozwiązaliśmy problem, który powodował, że funkcja sprawdzania Lintowania
UseRequireInsteadOfGet
nie prawidłowo obsługiwała łańcuchowych zastosowań operatorów?.
i!!
. (b/157677616)
Wersja 1.3.0-alfa05
20 maja 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
i androidx.fragment:fragment-testing:1.3.0-alpha05
. Wersja 1.3.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę
ViewTreeViewModelStoreOwner
z Cykl życia2.3.0-alpha03
iViewTreeSavedStateRegistryOwner
z SavedState1.1.0-alpha01
przy użyciuView
wFragment
. (Aosp/1297993, aosp/1300264)
Zmiany w interfejsie API
- Interfejsy API
setFragmentResult()
isetFragmentResultListener()
przyjmują teraz niepuste wartościBundle
iFragmentResultListener
. Aby wyraźnie wyczyścić wcześniej ustawiony wynik lub odbiornik, użyj nowych metodclearFragmentResult()
iclearFragmentResultListener()
. (b/155416778) - Rozszerzenia
setFragmentResultListener()
w Kotlin, które otrzymują sygnał lambda, są teraz oznaczone jakoinline
. (b/155323404)
Zmiany w działaniu
- Wycofane wcześniej
startActivityForResult()
,startIntentSenderForResult()
irequestPermissions
w systemieFragment
używają teraz wewnętrznieActivityResultRegistry
, co znosi ograniczenie dotyczące używania tylko dolnych bitów (poniżej0xFFFF
) w przypadku kodów żądań podczas używania tych interfejsów API. (b/155518741)
Aktualizacje dokumentacji
- Rozszerzyliśmy dokumentację konstruktorów
Fragment(@LayoutRes int)
iDialogFragment(@LayoutRes int)
, aby wyjaśnić, że podczas korzystania z domyślnegoFragmentFactory
konstruktora bez argumentów w podklasach należy je wywoływać. (b/153042497)
Wersja 1.3.0-alfa04
29 kwietnia 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
i androidx.fragment:fragment-testing:1.3.0-alpha04
. Wersja 1.3.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę przekazywania wyników między dwoma fragmentami fragmentów przez nowe interfejsy API w
FragmentManager
. Sprawdza się to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), elementów DialogFragments i fragmentów w nawigacji oraz daje pewność, że wyniki będą wysyłane do Twojego fragmentu Fragment, gdy ma on co najmniejSTARTED
. (b/149787344)
Zmiany w interfejsie API
- Interfejsy API fragmentów docelowych zostały wycofane. Do przekazywania danych między fragmentami należy używać nowych interfejsów Fragment Result API. (b/149787344)
- Interfejsy API
startActivityForResult()
/onActivityResult()
irequestPermissions()
/onRequestPermissionsResult()
w elemencie Fragment zostały wycofane. Użyj interfejsów API wyników związanych z aktywnością. (Aosp/1290887) - Zmiana powodująca niezgodność z aktywności
1.2.0-alpha04
: nazwa metodyprepareCall()
została zmieniona naregisterForActivityResult()
. (Aosp/1278717)
Poprawki błędów
- Funkcja
getViewLifecycleOwner()
fragmentu jest teraz zatrzymywana przed wywołaniem metodyonSaveInstanceState()
, co odzwierciedla zachowanie cyklu życia fragmentu. (b/154645875) - Wywołanie metody
setMenuVisibility(false)
we fragmencie prawidłowo zmienia teraz widoczność menu dostarczanych przez fragmenty podrzędne. (b/153593580) - Poprawiliśmy błąd
illegalStateException
podczas dodawania fragmentu do hierarchii widoków elementuDialogFragment
za pomocą poleceniaFragmentContainerView
. (b/154366601) - Metoda
getDefaultViewModelProviderFactory()
dotycząca fragmentów nie ulega już awarii, gdy hostujesz fragmenty poza aktywnością. (b/153762914)
Wersja 1.3.0-alfa03
1 kwietnia 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
i androidx.fragment:fragment-testing:1.3.0-alpha03
. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metody
prepareCall
wFragment
są terazfinal
. (b/152439361)
Poprawki błędów
- Naprawiliśmy regresję w Fragmentie
1.3.0-alpha02
podczas korzystania z parametruBottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - Naprawiono awarię, która występowała podczas korzystania z elementu
prepareCall
z fragmentu po zmianie konfiguracji. (b/152137004) - Rozwiązaliśmy problem, który powodował, że podczas korzystania z elementu
setTargetFragment()
przejścia między udostępnionymi elementami i zdarzeniami wyjściowymi były ignorowane. (b/152023196) - Z fragmentu
1.2.4
: zaktualizowano reguły ProGuard Fragmentu, aby umożliwić zaciemnianie zachowywanych fragmentów. (b/151605338) - Z fragmentu
1.2.4
: wyłączono regułę LintFragmentLiveDataObserve
w klasachDialogFragment
, ponieważ ich cykl życia i cykl życia widoku są zawsze zsynchronizowane, dzięki czemu można bezpiecznie używaćthis
lubviewLifecycleOwner
podczas wywoływaniaobserve
. (b/151765086)
Zmiany zależności
- Fragmenty zależą od aktywności
1.2.0-alpha03
, która miała znaczne ulepszenia w interfejsie Activity Result API wprowadzonego w aktywności1.2.0-alpha02
.
Wersja 1.3.0-alfa02
18 marca 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
i androidx.fragment:fragment-testing:1.3.0-alpha02
. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę interfejsu API
ActivityResultRegistry
wprowadzonego w aktywności1.2.0-alpha02
do obsługi przepływówstartActivityForResult()
+onActivityResult()
irequestPermissions()
+onRequestPermissionsResult()
bez zastępowania metod w Fragmentie, a także udostępnienia punktów zaczepienia do testowania tych przepływów. Zobacz zaktualizowany Uzyskiwanie wyników z aktywności. (b/125158199)
Zmiany w interfejsie API
DialogFragment
udostępnia teraz konstruktor używający elementu@LayoutRes
wskazującego układ, któryonCreateView()
powinien domyślnie zwiększać. (b/150327080)- Metoda
onActivityCreated()
została wycofana. Kod dotykający widoku fragmentu należy wprowadzać w interfejsieonViewCreated()
(który jest wywoływany bezpośrednio przed tagiemonActivityCreated()
), a inny kod inicjujący – wonCreate()
. Aby można było do Ciebie oddzwonić, gdyonCreate()
aktywności dobiegnie końca, trzeba zarejestrowaćLifeCycleObserver
w elemencieLifecycle
aktywności wonAttach()
i usunąć go po odebraniu wywołania zwrotnegoonCreate()
. (b/144309266)
Poprawki błędów
- Z fragmentu
1.2.3
: naprawiono błąd w komponencieDialogFragment
, który powodowałStackOverflowError
podczas wywoływania funkcjigetLayoutInflater()
z poziomuonCreateDialog()
. (b/117894767, aosp/1258664) - Z fragmentu
1.2.3
: zmniejszono zakres reguł ProGuard zawartych w elemencie Fragment, żeby można było usunąć nieużywane klasy Fragmentu. (b/149665169) - Z fragmentu
1.2.3
: poprawiono błędne wyniki w kontroli lintaUseRequireInsteadOfGet
w przypadku używania nazwy zmiennej lokalnej, która zastępowała nazwę właściwości Kotlin. (b/149891163) - Z fragmentu
1.2.3
:FragmentContainerView
nie zwraca jużUnsupportedOperationException
z powodu użycia nieprawidłowego konstruktora w podglądzie układu. (b/149707833)
Znane problemy
- Aplikacja
BottomSheetDialogFragment
nie umieszcza już poprawnie okna na ekranie. (b/151652127)
Wersja 1.3.0-alfa01
4 marca 2020 r.
Opublikowano androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
i androidx.fragment:fragment-testing:1.3.0-alpha01
. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę interfejsu API
ViewTreeLifecycleOwner.get(View)
w cyklu życia2.3.0-alpha01
, aby zwracać wartośćviewLifecycleOwner
fragmentuviewLifecycleOwner
jako wartośćLifecycleOwner
w przypadku widoków danych zwróconych przezonCreateView()
. (Aosp/1182955)
Zmiany w interfejsie API
- Metoda
setRetainInstance()
w przypadku fragmentów kodu została wycofana. Dzięki wprowadzeniu ViewModels deweloperzy mają własny interfejs API umożliwiający zachowywanie stanu, który można powiązać z aktywnościami, fragmentami kodu i wykresami nawigacyjnymi. Dzięki temu deweloperzy mogą używać normalnego, niezachowanego fragmentu i oddzielać konkretny stan, który chcą zachować. Pozwala to uniknąć wspólnego źródła wycieków, a jednocześnie zachować przydatne właściwości pojedynczego utworzenia i zniszczenia przechowywanego fragmentu (tj. konstruktoraViewModel
i otrzymywanego przez niego wywołania zwrotnegoonCleared()
). (b/143911815) - W wersji ViewPager2
1.0.0
klasyFragmentPagerAdapter
iFragmentStatePagerAdapter
dotyczące interakcji zViewPager
zostały wycofane. Zapoznaj się z artykułem Migracja z ViewPager do ViewPager2. (b/145132715)
Poprawki błędów
- Reguły ProGuard Fragmentu prawidłowo teraz zachowują tylko używane domyślne klasy
Fragment
, a nie wszystkie instancjeFragment
. Poprawia to regresję wprowadzoną we Fragmentie1.2.1
. (b/149665169 - Reguły Lint
require___()
dodane w Fragmentie1.2.2
nie są już fałszywie dodatnie w przypadku zmiennych lokalnych o tej samej nazwie co powielane nazwy właściwości Kotlin (np.view
). (b/149891163) FragmentContainerView
nie zwraca już błęduUnsupportedOperationException
podczas korzystania z podglądu układu w Android Studio. (b/149707833)- Naprawiono problem polegający na tym, że zachowywane fragmenty dodane po zapisaniu stanu nie były stale odtwarzane, a następnie niszczone po każdej zmianie konfiguracji. (b/145832397)
Wersja 1.2.5
Wersja 1.2.5
10 czerwca 2020 r.
Opublikowano androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
i androidx.fragment:fragment-testing:1.2.5
. Wersja 1.2.5 zawiera te zatwierdzenia.
Poprawki błędów
- Funkcja
getViewLifecycleOwner()
fragmentu jest teraz zatrzymywana przed wywołaniem metodyonSaveInstanceState()
, co odzwierciedla zachowanie cyklu życia fragmentu. To było wcześniej opublikowane w ramach fragmentu1.3.0-alpha04
. (b/154645875) - Wywołanie metody
setMenuVisibility(false)
we fragmencie prawidłowo zmienia teraz widoczność menu dostarczanych przez fragmenty podrzędne. To było wcześniej opublikowane w ramach fragmentu1.3.0-alpha04
. (b/153593580)
Wersja 1.2.4
Wersja 1.2.4
1 kwietnia 2020 r.
Opublikowano androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
i androidx.fragment:fragment-testing:1.2.4
. Wersja 1.2.4 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano reguły ProGuard Fragmentu, aby umożliwić zaciemnianie zachowywanych fragmentów. (b/151605338)
- Wyłączono regułę lintowania
FragmentLiveDataObserve
w klasachDialogFragment
, ponieważ cykl życia i cykl życia widoku danych są zawsze zsynchronizowane, dzięki czemu można bezpiecznie używaćthis
lubviewLifecycleOwner
podczas wywoływaniaobserve
. (b/151765086)
Wersja 1.2.3
Wersja 1.2.3
18 marca 2020 r.
Opublikowano androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
i androidx.fragment:fragment-testing:1.2.3
. Wersja 1.2.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd w funkcji
DialogFragment
, który powodował wyświetlenie błęduStackOverflowError
podczas wywoływania metodygetLayoutInflater()
z poziomu aplikacjionCreateDialog()
. (b/117894767, aosp/1258665) - Ograniczyliśmy zakres uwzględnionych reguł ProGuard Fragmentu, by umożliwić usunięcie nieużywanych klas Fragmentu. (b/149665169)
- Naprawiono błędne wyniki w sprawdzaniu Lint (
UseRequireInsteadOfGet
) w przypadku używania nazwy zmiennej lokalnej, która nakładała się na nazwę właściwości Kotlin. (b/149891163) FragmentContainerView
nie zgłasza jużUnsupportedOperationException
za użycie nieprawidłowego konstruktora w podglądzie układu. (b/149707833)
Wersja 1.2.2
Wersja 1.2.2
19 lutego 2020 r.
Opublikowano androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
i androidx.fragment:fragment-testing:1.2.2
. Wersja 1.2.2 zawiera te zatwierdzenia.
Nowe testy Lint
- Lint sugeruje użycie
viewLifecycleOwner
jakoLifecycleOwner
, aby wywołaćOnBackPressedDispatcher
wonCreateView()
,onViewCreated()
ionActivityCreated()
. (b/142117657) - Dodaliśmy nowy test Lint, który potwierdza, że podczas korzystania z artefaktu
fragment-testing
używasz prawidłowego atrybutudebugImplementation
. (b/141500106) - W przypadku wszystkich interfejsów API fragmentu kodu, które zawierają odpowiedniki w wersji
get
irequire
, w przypadku fragmentów kodu proponujemy teraz użycie powiązanych metodrequire___()
, a niecheckNotNull(get___())
,requireNonNull(get___())
czyget___()!!
. (Aosp/1202883)
Poprawki błędów
- Poprawiono pliki z fragmentem ProGuard, aby uniknąć ostrzeżeń R8 (b/148963981).
- Ulepszyliśmy obecny test Lint który sugeruje użycie
viewLifecycleOwner
w przypadku korzystania z interfejsuobserve
, aby obsługiwać również metodęobserve
metody rozszerzenialivedata-ktx
. (b/148996309) - Poprawiono formatowanie w wielu operacjach sprawdzania Lint (aosp/1157012).
Treści tłumaczone z zewnątrz
- Dziękujemy Zac Sweers za przesłanie
require___()
kontroli Lint w imieniu Slacka. (Aosp/1202883)
Wersja 1.2.1
Wersja 1.2.1
5 lutego 2020 r.
Opublikowano androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
i androidx.fragment:fragment-testing:1.2.1
. Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- W przypadku fragmentów dodanych za pomocą metod
add
ireplace
, które przyjmują wystąpienieClass
(lub zreformowane wersje Kotlin), ich domyślny konstruktor jest teraz przechowywany przez ProGuard. (b/148181315) - Wyjątki
FragmentStatePagerAdapter
iFragmentPagerAdapter
nie są już wykrywane przezFragmentManager
podczas uruchamianiafinishUpdate()
. (Aosp/1208711) - Naprawiono błąd, który powodował, że funkcja
FragmentManager.findFragment()
nie działała z fragmentami dodanymi za pomocą tagu<fragment>
. (b/147784323) - W układzie fragmenty witryn powiększone za pomocą tagu
<fragment>
zawsze otrzymują wywołanieonInflate()
przedonCreate()
. (Aosp/1215856) - Wywołanie
toString()
w instancjiFragmentManager
nie powoduje już wywołaniaNullPointerException
, gdy aktywność została już zniszczona. (b/148189412)
Zmiany zależności
- Fragmenty
1.2.1
zależą teraz od wartości zapisanego modelu widoku cyklu życia2.2.0
.
Wersja 1.2.0
Wersja 1.2.0
22 stycznia 2020 r.
Opublikowano androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
i androidx.fragment:fragment-testing:1.2.0
. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- FragmentContainerView:
FragmentContainerView
to zdecydowanie zalecany kontener na potrzeby dynamicznie dodawanych fragmentów kodu, zastępujący użycieFrameLayout
lub innych układów. Obsługuje też te same wartościclass
,android:name
i opcjonalnyandroid:tag
co tag<fragment>
, ale do dodania początkowego fragmentu używany jest normalny fragmentFragmentTransaction
zamiast niestandardowej ścieżki kodu używanej przez<fragment>
. - Czas
onDestroyView()
: fragmenty kodu czekają teraz na animacje wyjścia, wyjścia platformy i przejścia AndroidaX (w przypadku korzystania z przejścia1.3.0
), zanim wywołają metodęonDestroyView()
. add()
ireplace()
oparte na klasach: dodano nowe przeciążenia obiektówadd()
ireplace()
w systemieFragmentTransaction
, które przyjmująClass<? extends Fragment>
i opcjonalnieBundle
argumentów. Te metody wykorzystująFragmentFactory
do utworzenia wystąpienia fragmentu do dodania. Do interfejsufragment-ktx
zostały też dodane rozszerzenia Kotlin, które korzystają ze zmienionych typów (np.fragmentTransaction.replace<YourFragment>(R.id.container)
).- Integracja z modelem ViewModel cyklu życia (ViewModel SavedState):
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną w przypadku korzystania zby viewModels()
,by activityViewModels()
, konstruktoraViewModelProvider
lubViewModelProviders.of()
z fragmentem. - Nowe testy Lint: dodaliśmy nowy test Lint, który sprawdza, czy używasz
getViewLifecycleOwner()
do obserwowania danychLiveData
z okresówonCreateView()
,onViewCreated()
lubonActivityCreated()
. - Wycofanie metody
getFragmentManager()
: metodygetFragmentManager()
irequireFragmentManager()
we fragmencie kodu zostały wycofane i zastąpione pojedynczą metodągetParentFragmentManager()
, która zwraca niezerową wartośćFragmentManager
, do której jest dodawany fragment kodu (aby określić, czy można go bezpiecznie wywołać, użyj wartościisAdded()
). - Wycofanie
FragmentManager.enableDebugLogging()
: statyczna metodaFragmentManager.enableDebugLogging
została wycofana. FragmentManager obsługuje teraz parametrLog.isLoggable()
dla taguFragmentManager
, dzięki czemu możesz włączyć logowanieDEBUG
lubVERBOSE
bez ponownego kompilowania aplikacji.
Znane problemy
- Fragmenty, do których odwołuje się tylko atrybut
class
lubandroid:name
w elemencieFragmentContainerView
, nie są automatycznie zachowywane przez ProGuard, co wymaga ręcznego dodania reguły zachowywania dla każdej klasy fragmentu. (b/142601969) - Gdy dodasz element
NavHostFragment
za pomocąclass
lubandroid:name
w formacie XML za pomocąFragmentContainerView
, nie możesz użyćfindNavController()
wonCreate()
aktywności. (b/142847973)
Wersja 1.2.0-rc05
Styczeń 8, 2020
Opublikowano androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
i androidx.fragment:fragment-testing:1.2.0-rc05
. Wersja 1.2.0-rc05 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiliśmy regresję we fragmencie
1.2.0-rc04
podczas korzystania z tagu<fragment>
, który powodował nieprawidłowe wywoływanie parametruonViewCreated()
podczas niszczenia aktywności. (b/146290333) - Fragmenty dodane za pomocą tagu
<fragment>
są teraz prawidłowo wyczyszczone, nawet jeśli występują tylko w układzie poziomym. W efekcie fragmenty te są teraz prawidłowo przenoszone doCREATED
, nawet jeśli nie znajdują się w Twoim układzie. Nie są tworzone przez utworzenie instancji, ale nigdy nie przechodzą przez żadne metody cyklu życia. (b/145769287)
Wersja 1.2.0-rc04
18 grudnia 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
i androidx.fragment:fragment-testing:1.2.0-rc04
. Wersja 1.2.0-rc04 zawiera te zatwierdzenia.
Poprawki błędów
- Dostosowaliśmy animacje w wersjach
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
iTRANSIT_FRAGMENT_FADE
, aby uniknąć problemów z obrazem. (b/145468417)
Wersja 1.2.0-rc03
4 grudnia 2019
Opublikowano androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
i androidx.fragment:fragment-testing:1.2.0-rc03
. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono niezamierzoną zmianę działania, w wyniku której usunięte fragmenty są nadal zwracane przez funkcję
findFragmentById()
/findFragmentByTag()
podczas trwania animacji wyjścia/przejścia. (b/143982969, aosp/1167585) - Fragmenty podrzędne są teraz prawidłowo zatrzymywane przed elementami nadrzędnymi, gdy aktywność zawierająca wywołanie
onSaveInstanceState()
. (b/144380645) - Naprawiono błąd, przez który wyświetlenia były błędnie oznaczane jako
INVISIBLE
po wycięciu ukrytego fragmentu. (b/70793925) - Przejścia udostępnionych elementów obejmują teraz widoki, które zostały obrócone, przeskalowane itp. (b/142835261)
Aktualizacje dokumentacji
- Doprecyzowaliśmy dokumentację wycofywania
setUserVisibleHint()
. (b/143897055) - Ulepszyliśmy dokumentację dotyczącą
setFragmentFactory()
igetFragmentFactory()
, by lepiej wskazać, że ustawienieFragmentFactory
będzie miało wpływ również na podrzędne elementy FragmentManager. (Aosp/1170095)
Zmiany zależności
- Fragmenty są teraz zależne od cyklu życia
2.2.0-rc03
, obiektu ViewModel SavedState1.0.0-rc03
i aktywności1.1.0-rc03
.
Wersja 1.2.0-rc02
7 listopada 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
i androidx.fragment:fragment-testing:1.2.0-rc02
. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- W kotlinie funkcja LintFix do użycia polecenia
getViewLifecycleOwner()
do obserwowania danychLiveData
zonCreateView()
,onViewCreated()
ionActivityCreated()
(wprowadzona w Fragmentu1.2.0-rc01
) używa teraz składni dostępu do właściwości KotlinviewLifecycleOwner
zamiastgetViewLifecycleOwner()
. (Aosp/1143821)
Wersja 1.2.0-rc01
23 października 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
i androidx.fragment:fragment-testing:1.2.0-rc01
. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
FragmentContainerView
obsługuje teraz oprócz atrybutuandroid:name
atrybutclass
, powielając funkcje tagu<fragment>
. (b/142722242)- Dodaliśmy nowy test Lint, który gwarantuje, że używasz narzędzia
getViewLifecycleOwner()
podczas obserwowania danych typuLiveData
z okresówonCreateView()
,onViewCreated()
lubonActivityCreated()
. (b/137122478)
Poprawki błędów
- Wywołania zwrotne
onDismiss
ionCancel
w metodzieDialogFragment
gwarantują teraz, że przekazany do nichDialogInterface
nie ma wartości null, a po wykonaniu żądaniagetDialog()
zwraca wartość niezerową. (b/141974033) FragmentContainerView
dodaje teraz fragment zdefiniowany przezclass
lubandroid:name
w ramach inflacji, dzięki czemufindFragmentById()
ifindFragmentByTag()
działają natychmiast. (b/142520327)- Naprawiono błąd
IllegalStateException
wFragmentContainerView
z powodu zapisywania stanu. (b/142580713) - Poprawiliśmy błąd
UnsupportedOperationException
w klasieFragmentContainerView
, gdy klasaFragmentContainerView
jest zaciemniona. (b/142657034)
Znane problemy
- Fragmenty, do których odwołuje się tylko atrybut
class
lubandroid:name
w elemencieFragmentContainerView
, nie są automatycznie zachowywane przez ProGuard, co wymaga ręcznego dodania reguły zachowywania dla każdej klasy fragmentu. Wyłączyliśmy regułę Lint sugerującą przeniesienie doFragmentContainerView
, dopóki problem nie zostanie rozwiązany waapt2
. (b/142601969)
Wersja 1.2.0-beta02
11 października 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
i androidx.fragment:fragment-testing:1.2.0-beta02
. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że element
onInflate()
fragmentu nie otrzymywał odpowiednich atrybutów zFragmentContainerView
, co powodowało niedziałające przypadki, takie jakNavHostFragment
. (b/142421837)
Wersja 1.2.0-beta01
9 października 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
i androidx.fragment:fragment-testing:1.2.0-beta01
. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
FragmentContainerView
dodaje obsługę dodawania początkowego fragmentu z obsługąandroid:name
i opcjonalnych atrybutów XMLandroid:tag
. W odróżnieniu od tagu<fragment>
FragmentContainerView
używa normalnego typuFragmentTransaction
znajdującego się pod maskowaniem, aby dodać początkowy fragment, co umożliwia dalsze operacjeFragmentTransaction
wFragmentContainerView
i umożliwia użycie powiązania widoku na potrzeby układu. (b/139830628, b/141177981)- W przypadku fragmentów kodu pojawia się teraz ostrzeżenie o lintowaniu, które umożliwia szybkie zastąpienie elementu
<fragment>
elementemFragmentContainerView
. (b/139830056)
Poprawki błędów
- Naprawiono błąd
ClassCastException
przy korzystaniu zandroidx.transition
. (b/140680619) - Gdy używasz przejścia
1.3.0-beta01
, fragmenty wymagają teraz zakończenia przejściaandroidx.transition
(oprócz przejść platformy i animacji, które zostały poprawione odpowiednio w Fragmentie1.2.0-alpha03
i Fragment1.2.0-alpha02
), zanim wyśleszonDestroyView()
. (Aosp/1119841) - Gdy używasz przejścia
1.3.0-beta01
, fragmenty z poprawnym anulowaniem przejśćandroidx.transition
przed rozpoczęciem nowych przejść i animacji w tym samym kontenerze. (Aosp/1119841) - Naprawiono problem w interfejsie API na poziomie 17 i starszym podczas korzystania z przejścia
androidx.transition
w widoku głównym widoku fragmentów podczas korzystania z metodyFragmentContainerView
. (b/140361893) - Artefakt
fragment-testing
jest teraz zależny od systemu AndroidX Test1.2.0
, co pozwala wyeliminować brak zgodności z najnowszym Espresso 3.2.0. (b/139100149) - W elemencie FragmentManager usunięto użycie atrybutu
Log.w
. (Aosp/1126468)
Znane problemy
- Element
onInflate()
fragmentu nie otrzymuje prawidłowych atrybutów z elementuFragmentContainerView
, co jest przyczyną problemów takich jakNavHostFragment
. (b/142421837)
Wersja 1.2.0-alfa04
18 września 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
i androidx.fragment:fragment-testing:1.2.0-alpha04
. Wersja 1.2.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metody
getFragmentManager()
irequireFragmentManager()
w obiekcieFragment
zostały wycofane i zastąpione pojedynczą metodągetParentFragmentManager()
, która zwraca wartośćFragmentManager
, do której został dodany fragment (możesz użyćisAdded()
, aby określić, czy można je bezpiecznie wywołać). (b/140574496) - Metoda statyczna
FragmentManager.enableDebugLogging
została wycofana. FragmentManager obsługuje teraz parametrLog.isLoggable()
dla taguFragmentManager
, dzięki czemu możesz włączyć logowanieDEBUG
lubVERBOSE
bez ponownego kompilowania aplikacji. (aosp/1116591)
Poprawki błędów
- Fragmenty są teraz prawidłowo niszczone podczas wyświetlania animacji wyjścia w innych fragmentach. (b/140574199)
- Naprawiono błąd, który powodował, że funkcja Fragments wywoływała funkcję
Activity.findViewById()
w miejscach, w których wcześniej tego nie robiła. (Aosp/1116431)
Wersja 1.2.0-alfa03
5 września 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
i androidx.fragment:fragment-testing:1.2.0-alpha03
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
FragmentContainerView
to terazfinal
. (b/140133091)
Poprawki błędów
- Teraz
FragmentContainerView
prawidłowo odwraca kolejność rysowania podczas wyrzucania fragmentów z tylnego stosu. (b/139104187) - Naprawiono błąd polegający na tym, że w tym samym czasie była wyświetlana nieprawidłowa animacja przy jednoczesnym wybijaniu fragmentu i dodawaniu nowego. (b/111659726)
- Przed wysłaniem
onDestroyView()
elementy fragmenty oczekują teraz na zakończenie przejść (oprócz animacji, które naprawiono w sekcji Fragment1.2.0-alpha02
). (b/138741697)
Wersja 1.2.0-alfa02
7 sierpnia 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
i androidx.fragment:fragment-testing:11.2.0-alpha02
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
SavedStateViewModelFactory
jest teraz domyślną fabryką używaną, gdy używaszby viewModels()
,by activityViewModels()
, konstruktoraViewModelProvider
lubViewModelProviders.of()
zFragment
. (b/135716331)- Domyślne animacje podczas korzystania z tych funkcji:
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
isetTransition
na urządzeniuFragmentTransaction
zostały zaktualizowane, aby odpowiadały animacji na urządzeniach z Androidem 10. (Aosp/1012812, aosp/1014730)
Zmiany w interfejsie API
- Wprowadza
FragmentContainerView
jako zalecany kontener na potrzeby dynamicznie dodawanych fragmentów kodu, zastępując użycieFrameLayout
itp., ponieważ rozwiązuje problemy z kolejnością animacji i wypełnieniem okien do fragmentów kodu. (b/37036000, aosp/985243, b/136494650) - Dodano statyczną metodę
FragmentManager.findFragment(View)
do pobierania zawierającego fragment kodu z widoku powiększonego o fragment. Rozszerzenie Kotlin jest również dostępne w języku:fragment-ktx
. (Aosp/1090757) - W systemie
FragmentTransaction
dodano nowe przeciążenia zadańadd()
ireplace()
, które przyjmująClass<? extends Fragment>
i opcjonalnieBundle
argumentów. Te metody wykorzystująFragmentFactory
do utworzenia wystąpienia fragmentu do dodania. Do plikufragment-ktx
dodano też rozszerzenie Kotlin, które korzysta ze zmienionych typów (np.fragmentTransaction.replace<YourFragment>(R.id.container)
). (b/126124987) - Do
Fragment
wywołań zwrotnych cyklu życia dodano adnotacje (@MainThread
). (b/127272564) - Interfejsy API związane z tytułem menu nawigacyjnego w
FragmentTransaction
iFragmentManager.BackStackEntry
zostały wycofane. (b/138252944) - Metoda
setTransitionStyle
wFragmentTransaction
została wycofana. (Aosp/1011537) - Wiele metod w
FragmentManager
nie jest jużabstract
. SamaFragmentManager
pozostajeabstract
i nie należy jej bezpośrednio tworzyć instancji ani rozszerzyć. Należy nadal pobierać tylko istniejącą instancję ze źródełgetSupportFragmentManager()
,getChildFragmentManager()
itp.
Poprawki błędów
- Z fragmentu
1.1.0-rc04
: fragmenty z prawidłowym anulowaniem przełożonych przejść zostały wyodrębnione. (b/138251858) - Z fragmentu
1.1.0-rc03
: naprawiliśmy problem polegający na tym, że wywołanie metodypostponeEnterTransition()
z czasem oczekiwania więcej niż raz nie anuluje poprzednich limitów czasu oczekiwania. (b/137797118) - Z fragmentu
1.1.0-rc02
: usunięto awarię wFragmentPagerAdapter
iFragmentStatePagerAdapter
podczas usuwania bieżącego elementu. (b/137209870) - Fragmenty czekają teraz na zakończenie animacji przed wysłaniem polecenia
onDestroyView()
. (b/136110528) - Animacje fragmentów podrzędnych i ich elementów podrzędnych są teraz prawidłowo obsługiwane podczas animowania nadrzędnego fragmentu. (b/116675313)
- Naprawiliśmy
NullPointerException
w przypadku korzystania z przejścia elementów wspólnych oraz łączenia operacji „pop” i „add”. (b/120507394) - Dodano obejście funkcji
IllegalStateException
w przypadku użycia elementówFragmentPagerAdapter
iFragmentStatePagerAdapter
w testach Robolectric. (b/137201343)
Wersja 1.2.0-alfa01
2 lipca 2019 r.
Opublikowano androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
i androidx.fragment:fragment-testing:1.2.0-alpha01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- FragmentManager wywołuje teraz
requestApplyInsets()
po dołączeniu widoku fragmentu i bezpośrednio przed wywołaniemonViewCreated()
, dzięki czemu widok zawsze ma prawidłowe wstawki. (b/135945162)
Poprawki błędów
- Naprawiono błąd
NullPointerException
podczas wywoływania elementuFragmentTransaction
, który używał właściwościsetPrimaryNavigationFragment()
przedreplace()
. (b/134673465)
Wersja 1.1.0
Wersja 1.1.0
5 września 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
i androidx.fragment:fragment-testing:1.1.0
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ważne zmiany od wersji 1.0.0
- fragment-testing: artefakt
fragment-testing
udostępnia klasęFragmentScenario
do testowania fragmentu w izolacji. Więcej informacji znajdziesz w dokumentacji testowania fragmentów aplikacji. - FragmentFactory: możesz teraz ustawić
FragmentFactory
wFragmentManager
, aby zarządzać tworzeniem instancji fragmentów, eliminując rygorystyczne wymagania dotyczące konstruktora bez argumentu. - Przedstawiciele usługi Kotlin dla obiektów ViewModel: artefakt
fragment-ktx
zawiera teraz 2 przedstawicieli właściwości Kotlin:by viewModels()
za dostęp do modeli widoków danych powiązanych z poszczególnym fragmentem orazby activityViewModels()
do dostępu do obiektów ViewModel w zakresie aktywności. - Maksymalny cykl życia: możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując
setMaxLifecycle()
wFragmentTransaction
. Zastąpiły one wycofanesetUserVisibleHint()
.FragmentPagerAdapter
iFragmentStatePagerAdapter
mają nowy konstruktor, który umożliwia przełączanie się na nowe zachowanie. - Konstruktor układu FragmentActivity: podklasy
FragmentActivity
mogą teraz wywoływać konstruktorFragmentActivity
, który przyjmuje identyfikatorR.layout
, wskazując układ, który należy ustawić jako widok treści jako alternatywę dla wywoływaniasetContentView()
wonCreate()
. Nie zmienia to wymogu, że podklasa ma konstruktor bez argumentów. - Konstruktor Układ Fragmentu: podklasy
Fragment
mogą teraz wywoływać konstruktor w interfejsieFragment
, który przyjmuje identyfikatorR.layout
, wskazując układ, którego należy użyć dla tego fragmentu jako alternatywę dla zastępowaniaonCreateView()
. Powiększony układ można skonfigurować tutaj:onViewCreated()
. - Przełóż z ustalaniem limitu czasu oczekiwania: dodano nowe przeciążenie
postponeEnterTransition()
, które zajmuje limit czasu.
Wersja 1.1.0-rc04
7 sierpnia 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
i androidx.fragment:fragment-testing:1.1.0-rc04
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Fragmenty prawidłowo anulują przełożone przejścia na fragmentach. (b/138251858)
Wersja 1.1.0-rc03
19 lipca 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
i androidx.fragment:fragment-testing:1.1.0-rc03
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wywołanie funkcji
postponeEnterTransition()
z czasem oczekiwania więcej niż raz nie anuluje poprzednich limitów czasu oczekiwania. (b/137797118)
Wersja 1.1.0-rc02
17 lipca 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
i androidx.fragment-testing:fragment:1.1.0-rc02
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono awarię w
FragmentPagerAdapter
iFragmentStatePagerAdapter
podczas usuwania bieżącego elementu. (b/137209870)
Wersja 1.1.0-rc01
2 lipca 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
i androidx.fragment:fragment-testing:1.1.0-rc01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Podczas przenoszenia fragmenty adresów URL wyświetlają się teraz prawidłowo, gdy używane są operacje
show()
ihide()
. (b/133385058) - Naprawiono błąd
NullPointerException
podczas wywoływania elementuFragmentTransaction
, który używał właściwościsetPrimaryNavigationFragment()
przedreplace()
. (b/134673465)
Wersja 1.1.0-beta01
5 czerwca 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
i androidx.fragment:fragment-testing:1.1.0-beta01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Wywołania zwrotne
androidx.lifecycle.Lifecycle
(powiązane konkretnie z elementamiSTARTED
,RESUMED
,PAUSED
,STOPPED
iDESTROYED
) dla zagnieżdżonych fragmentów kodu są teraz prawidłowo zagnieżdżone. (b/133497591) - Instancje (
OnBackPressedCallback
) zarejestrowane w elemencieonCreate()
fragmentu mają teraz prawidłowo pierwszeństwo przed podrzędnymi obiektami FragmentManager. (b/133175997) - Fragmenty podrzędne nie są już animowane, gdy jest zastępowany fragment nadrzędny. (b/121017790)
- Animacje i przejścia fragmentów z elementów są teraz ignorowane podczas korzystania z
animateLayoutChanges="true"
, co naprawiło problem z nieprawidłowym zniszczeniem fragmentów kodu. (b/116257087)
Wersja 1.1.0-alfa09
16 maja 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
i androidx.fragment:fragment-testing:1.1.0-alpha09
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- W przypadku zmiany głównego fragmentu nawigacji fragmenty kodu otrzymują wywołanie zwrotne do nowej metody
onPrimaryNavigationFragmentChanged(boolean)
. aosp/960857
Poprawki błędów
- Elementy menu rozwijane przez fragment podrzędny są teraz prawidłowo usuwane po usunięciu fragmentu nadrzędnego. b/131581013
Wersja 1.1.0-alfa08
7 maja 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
i androidx.fragment:fragment-testing:1.1.0-alpha08
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ta wersja jest niezgodna z Preferencjami od 1.1.0-alfa01 do 1.1.0-alfa04. Jeśli używasz tej wersji Fragmentów, uaktualnij Preferencje do wersji 1.1.0-alfa05.
Nowe funkcje
- Dodano nowe przeciążenie obiektu
postponeEnterTransition()
. Po upływie tego czasu fragment będzie automatycznie wywoływał metodęstartPostponedEnterTransition()
b/120803208.
Zmiany w interfejsie API
- Zmiana powodująca niezgodność: wycofana wcześniej metoda
FragmentFactory
instantiate
, która pobierała metodęBundle
, została usunięta. aosp/953856 - Zmiana powodująca niezgodność: stałe
RESUME_ONLY_CURRENT_FRAGMENT
iUSE_SET_USER_VISIBLE_HINT
wFragmentPagerAdapter
iFragmentStatePagerAdapter
zostały zmienione odpowiednio naBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
iBEHAVIOR_SET_USER_VISIBLE_HINT
. aosp/954782
Poprawki błędów
- Fragmenty, których cykl życia został ograniczony przez
setMaxLifecycle()
, nie są już wznawiane przed osiągnięciem ostatecznego stanu. b/131557151 - Przy korzystaniu z metody
setMaxLifecycle(Lifecycle.State.CREATED)
widok fragmentów jest prawidłowo zniszczony. aosp/954180
Wersja 1.1.0-alfa07
25 kwietnia 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
i androidx.fragment:fragment-testing:1.1.0-alpha07
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując
setMaxLifecycle()
wFragmentTransaction
. Zastąpiły one wycofanesetUserVisibleHint()
.FragmentPagerAdapter
iFragmentStatePagerAdapter
mają nowy konstruktor, który umożliwia przełączanie się na nowe zachowanie. (b/129780800)
Zmiany w interfejsie API
- Wywoływanie interfejsu
moveToState(STARTED)
w systemieFragmentScenario
może teraz odbywać się tylko na urządzeniach z interfejsem API w wersji 24 lub nowszej. (B/129880016)
Zmiany w działaniu
- W efekcie (b/129907905) fragmenty na stosie tylnym nie otrzymają wywołania zwrotnego
onCreateView()
podczas odtwarzania aktywności hostingu. FunkcjaonCreateView()
będzie teraz wywoływana tylko wtedy, gdy fragment stanie się widoczny (tzn. gdy stos tylny zostanie zagnieżdżony).
Poprawki błędów
- Naprawiono błąd związany z używaniem tagu
<fragment>
w pliku XML i konstruktoracontentLayoutId
FragmentActivity
lubAppCompatActivity
. (b/129907905) - Naprawiliśmy błąd polegający na tym, że po zmianie konfiguracji fragmenty z wstecznego stosu nie były przenoszone do co najmniej
CREATED
, co powodowało nieprawidłowe usuwanie elementów ViewModel i przechowywanych fragmentów podrzędnych. (b/129593351) - Naprawiono awarię
restoreSaveState
spowodowaną brakiem synchronizacji zachowywanych fragmentów po zapisaniu stanu instancji. (b/130433793) (Aosp/947824) - Rozwiązaliśmy problemy, które powodowały, że element
OnBackPressedCallback
dodany z cyklem życia fragmentu nie był wywoływany, jeśliFragmentManager
miał stos wsteczny. Więcej informacji znajdziesz na stronie androidx.activity 1.0.0-alpha07. (Aosp/948209) - Fragmenty nie wymuszają już polecenia
LAYER_TYPE_HARDWARE
w animacjach. Jeśli potrzebujesz animacji warstwy sprzętowej, ustaw ją jako część animacji. (b/129486478)
Wersja 1.1.0-alfa06
3 kwietnia 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
i androidx.fragment:fragment-testing:1.1.0-alpha06
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Wyjątki zgłaszane przez FragmentManager zawierają teraz nazwę fragmentu w wiadomości. (b/67759402)
Zmiany w interfejsie API
Fragment
iFragmentActivity
zawierają teraz drugi konstruktor, który przyjmuje@LayoutRes int
, co zastępuje poprzednie działanie adnotacji klasy@ContentView
. Ta metoda działa zarówno w modułach aplikacji, jak i bibliotece. (b/128352521)- Element
onActivityResult()
obiektu FragmentActivity jest teraz prawidłowo oznaczony jako@CallSuper
. (b/127971684) - Metoda
instantiate
FragmentFactory, która przyjmuje pakiet argumentów, została wycofana. Aplikacje powinny używać nowego przeciążeniainstantiate
, które nie przyjmuje pakietu. (b/128836103) - Metody
FragmentScenario
mają teraz prawidłowe adnotacje@StyleRes
. (Aosp/924193) - Interfejs
FragmentTabHost
został wycofany. (b/127971835) - Element
getThemedContext()
użytkownika FragmentActivity został usunięty. (Aosp/934078)
Poprawki błędów
- Naprawiono regresję w wersji 1.1.0-alfa05, która powodowała miganie przychodzącego fragmentu na ekranie. (b/129405432)
- Naprawiono problem utraty głównego fragmentu nawigacji po serii operacji popBackStack+replace+popBackStack. (b/124332597)
- Naprawiono problem z używaniem konstruktorów
@ContentView
w aktywności podczas przywracania stanu fragmentu. (b/127313094) - Poprawiliśmy logikę
setTargetFragment()
podczas zastępowania istniejącego fragmentu docelowego fragmentem, który nie jest jeszcze dołączony do FragmentManagera. (Aosp/932156)
Wersja 1.1.0-alfa05
13 marca 2019 r.
Opublikowano androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
i androidx.fragment:fragment-testing:1.1.0-alpha05
. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Nowe funkcje
- Wyszukiwania adnotacji
@ContentView
są teraz przechowywane w pamięci podręcznej (b/123709449)
Zmiany w działaniu
- Wywołanie
remove()
,hide()
,show()
,detach()
isetPrimaryNavigationFragment()
z fragmentem dołączonym do innego obiektu FragmentManager powoduje teraz wystąpienie błęduIllegalStateException
, a nie błędu (aosp/904301).
Poprawki błędów
- Certyfikat
onNewIntent
dla:FragmentActivity
jest teraz prawidłowo oznaczony etykietą@CallSuper
(b/124120586) - Rozwiązaliśmy problem, który powodował, że właściwość
onDismiss()
usługiDialogFragment
była wywoływana dwukrotnie podczas korzystania zgetDialog().dismiss()
lubgetDialog().cancel()
(b/126563750)
Wersja 1.1.0-alfa04
7 lutego 2019 r.
Opublikowano androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
i androidx.fragment:fragment-testing 1.1.0-alpha04
.
Nowe funkcje
- Dodaliśmy obsługę adnotacji klasy
@ContentView
, która pozwala wskazać plik XML układu, który należy powiększyć jako alternatywę dla zastąpieniaonCreateView()
. Zalecamy wyświetlanie powiązanych zadań w:onViewCreated()
. (Aosp/837619) fragment-testing
korzysta teraz ze stabilnej wersjiandroidx.test:core-ktx
(b/121209673)- Możesz teraz używać polecenia
openActionBarOverflowOrOptionsMenu
z elementemFragmentScenario
do testowania menu opcji hostowanych fragmentów (b/121126668)
Zmiany w interfejsie API
- Dodano metodę
requireArguments()
, która zwraca wartość@NonNull Bundle
lub zwracaIllegalStateException
(b/121196360). - Dodaliśmy uwagę, że nie można zastąpić atrybutów
getLifecycle()
,getViewLifecycleOwner()
igetViewLifecycleOwnerLiveData()
. W kolejnej wersji zostaną one udostępnione jako ostateczne. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (Aosp/880714) - Dodaliśmy uwagę, że adresu
getViewModelStore()
nie należy zastąpić. W kolejnej wersji zostanie ona uniezależniona od wersji. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (Aosp/880713) - Naprawiono problem ze zgodnością plików binarnych z poprzednimi wersjami kodu Fragmenty. (Aosp/887877) (Aosp/889834)
Poprawki błędów
- Fragmenty docelowe są usuwane prawidłowo, gdy przekażesz uprawnienia
null
dosetTargetFragment()
. (Aosp/849969) - Rozwiązaliśmy problem, który powodował, że docelowe fragmenty były czasami niedostępne w okresie
onDestroy()
lub później. (b/122312935) - Funkcja onclose() w oknie DialogFragment jest teraz wywoływana przed
onDestroy()
. (Aosp/874133) (Aosp/890734)
Wersja 1.1.0-alfa03
17 grudnia 2018 r.
Nowe funkcje
- Fragment zawiera teraz zaimplementowaną funkcję
BundleSavedStateRegistryOwner
i zależy od nowo udostępnionej biblioteki SavedState [aosp/824380] - Dodano delegata usługi
by activityViewModels
Kotlin, który może pobierać obiekty ViewModel powiązane z aktywnością [b/119050253] - Delegat właściwości
by viewModels
Kotlin został rozszerzony tak, aby przyjmował opcjonalną metodę lambda do pobierania parametruViewModelStoreOwner
, co umożliwia przekazywanie nadrzędnego fragmentu lub innego niestandardowego elementuViewModelStoreOwner
za pomocą kodu takiego jakval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
Zmiany w interfejsie API
FragmentScenario
umożliwia teraz określenie motywu, na przykładTheme.AppCompat
[b/119054431]. Jest to niezbędna zmiana.- Dodano metodę
requireView()
, która zwraca błąd@NonNull View
lub zwraca metodęIllegalStateException
[b/120241368]. - Dodano metodę
requireParentFragment()
, która zwraca błąd@NonNull Fragment
lub zwraca metodęIllegalStateException
[b/112103783].
Poprawki błędów
- Naprawiony wyjątek IllegalStateException: Błąd zapisu stanu b/120814739
- Fragmenty przywracane z zapisanego stanu instancji będą teraz zawsze otrzymywać wartość
Bundle
różną od null [b/119794496] - Usunięte fragmenty nie używają już ponownie obiektu
Lifecycle
, jeśli został on ponownie dodany [b/118880674]
Wersja 1.1.0-alfa02
3 grudnia 2018 r.
Nowe funkcje
- Rozszerzenia Kotlin w narzędziu FragmentScenariusz pozwalają teraz na użycie funkcji lambda do budowy fragmentu kodu zamiast przekazania instancji
FragmentFactory
. (Aosp/812913)
Poprawki błędów
- Naprawiono wyjątek IllegalStateException w przypadku używania zagnieżdżonych fragmentów na stosie wstecznym (b/119256498)
- Naprawiono awarię, która występowała podczas korzystania z
FragmentScenario.recreate()
zFragmentFactory
(aosp/820540) - Naprawiono problem, który powodował, że docelowe fragmenty nie były dostępne po usunięciu fragmentu (aosp/807634)
Wersja 1.1.0-alfa01
5 listopada 2018 r.
Oto pierwsza wersja artefaktu fragment-testing
i FragmentScenario
, która została utworzona na podstawie interfejsów API androidx.test:core. Więcej informacji znajdziesz w dokumentacji testowania fragmentów.
Nowe funkcje
- Nowa klasa FragmentScenariusz do testowania fragmentów w izolacji.
- Możesz teraz ustawić
FragmentFactory
w dowolnym elemencieFragmentManager
, aby kontrolować sposób tworzenia instancji nowych instancji Fragment. - Dodaliśmy nowego delegata właściwości
by viewModels()
Kotlin do pobierania modeli ViewModel z fragmentu kodu. - Oczekujące zdarzenia wejściowe (takie jak kliknięcia) są teraz anulowane w elemencie
onStop()
fragmentu.
Zmiany w interfejsie API
- Znacznie rozwinięto adnotacje wartości null w obrębie interfejsu Fragment API.
Poprawki błędów
- Napraw błąd, który powodował, że operacje fragmentu kodu w LiveData kończyły się niepowodzeniem (b/77944637)
Znane problemy
- Po usunięciu fragmentów z Menedżera fragmentów nie można uzyskać dostępu do docelowych fragmentów kodu.
fragment-testing
zależy odandroidx.test:core:1.0.0-beta01
zamiast poprawnegoandroidx.test:core:1.0.0
.