Fragment
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 23 września 2026 r. | 1.9.1 | - | - | - |
Deklarowanie zależności
Aby dodać zależność od fragmentu, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Odlotowe
dependencies { def fragment_version = "1.9.1" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.9.1" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$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.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.9
Wersja 1.9.1
23 września 2026 r.
Publikacja androidx.fragment:fragment-*:1.9.1 Wersja 1.9.1 zawiera te zatwierdzenia.
Wersja 1.9.0
12 sierpnia 2026 r.
Publikacja androidx.fragment:fragment-*:1.9.0 Wersja 1.9.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.8.0:
Fragmentimplementuje teraz interfejsContextAwarei może być używany do wykonywania kodu po dołączeniu fragmentu.- Kompozycja
AndroidFragmentakceptuje teraz parametrmaxLifecycle, który umożliwia ograniczenie stanu cyklu życia osadzonego elementuFragment. Fragmentobsługuje teraz śledzenie systemowe zdarzenia cyklu życia za pomocąJetpack Tracing.
Wersja 1.9.0-rc01
29 lipca 2026 r.
Publikacja androidx.fragment:fragment-*:1.9.0-rc01 Wersja 1.9.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Gdy używasz
FragmentScenario.launchInContainer, testowany fragment będzie teraz znajdować się wFragmentContainerView. (Ia6273, b/531550353)
Wersja 1.9.0-alpha02
1 lipca 2026 r.
Publikacja androidx.fragment:fragment-*:1.9.0-alpha02 Wersja 1.9.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj parametr
maxLifecycledo funkcjiAndroidFragmentcomposable. Pozwala to ograniczyć stan cyklu życia osadzonego komponentuFragment, co daje większą kontrolę nad jego działaniem w złożonych konfiguracjach interfejsu, takich jak pagery czy karty. (Ie99b5, b/526109804) - Biblioteka fragmentów obsługuje teraz śledzenie systemowe zdarzenia cyklu życia za pomocą Jetpack Tracing. (Ibc63b, b/112161409)
Wersja 1.9.0-alpha01
17 czerwca 2026 r.
Publikacja androidx.fragment:fragment-*:1.9.0-alpha01 Wersja 1.9.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Fragment implementuje teraz interfejs
ContextAwarei może służyć do wykonywania kodu po dołączeniu fragmentu. (I38019, b/477255355)
Poprawki błędów
- Rozwiązaliśmy problem z awarią w fragmencie, która występowała, gdy aktywność była wysyłana w tle podczas gestu przewidywanego przejścia wstecz. (I55734, b/389589678)
- Detektor UnsafeFragmentLifecycleObserverDetector nie działa już w kompozycji. (Ic4176, b/501504696)
- [Z Fragmentu 1.8.9] Rozwiązaliśmy problem polegający na tym, że anulowanie gestu przewidywania powrotu, który powoduje wycofanie operacji ukrywania, sprawia, że kolejny gest nie jest animowany prawidłowo podczas korzystania z animatorów. (I0a400, b/384765586)
- [Z Fragmentu 1.8.9] Rozwiązaliśmy problem, w którym połączenie metod setMaxLifecycle i popBackStack mogło nie przenieść fragmentu na górze stosu do stanu RESUMED. (I3448b, b/406127576)
- [Z Fragmentu 1.8.8] Rozwiązano problem polegający na tym, że FragmentManager ulegał awarii podczas próby zapisania stanu fragmentów dodanych za pomocą
setMaxLifecycle(Lifecycle.State.INITIALIZED). Te fragmenty, ponieważ nigdy nie przeszły przezonCreate(), nie mają już zapisanego stanu ani nie sąonSaveInstanceState()wywoływane. (I6e37a, b/408163315) - [Z Fragmentu 1.8.7] Rozwiązaliśmy problem polegający na tym, że po operacjach pop i replace w tej samej ramce FragmentManager nie był w odpowiednim stanie, co w połączeniu z przewidywanym przejściem wstecz mogło powodować awarię. (I50ad1, b/380288461)
- [Z Fragmentu 1.8.6] Zastąpienie
setOnApplyWindowInsetsListenerFragmentContainerView przyjmuje teraz wartość null. (I575f0, b/282790626) - [Z Fragmentu 1.8.5] Naprawiono błąd
IllegalStateExceptionwywoływany przezsaveBackStacktylko po anulowaniu lub przerwaniu gestu przewidywanego przejścia wstecz. (I3387d, b/342419080) - [Z Fragmentu 1.8.4] Naprawiono
UninitializedPropertyAccessExceptionwAndroidFragmentpodczas dynamicznej zamiany klasy, której używa instancjaAndroidFragment. (I12dea, b/365578408) - [Z Fragmentu 1.8.4] Rozwiązaliśmy problem, który powodował awarię fragmentów po szybkim naciśnięciu przycisku powrotu lub wykonaniu szybkiego gestu powrotu. (Ib0415, b/364804225, b/364914301)
- [Z Fragmentu 1.8.4] Rozwiązaliśmy problem we fragmentach, który powodował, że przerwanie gestu przewidywanego powrotu powodowało przejście menedżera fragmentów w niezdefiniowany stan, a nawet wyświetlanie nieprawidłowego fragmentu. (If82e2, b/338624457)
- [Z fragmentu 1.8.3]
AndroidFragmentnie ulega już awarii, jeśli zostanie dodany do kompozycji, gdy stan zawierającego go działania lub fragmentu jest już zapisany. (I985e9, b/356643968) - [Z Fragmentu 1.8.2] Wywołanie systemowego przycisku Wstecz, gdy FragmentManager ma oczekujące operacje, nie będzie już powodować wyjątku związanego z wyjściem poza zakres. (I9ba32, b/342316801)
- [Z Fragmentu 1.8.2]
AndroidFragmentprawidłowo obsługuje teraz przypadki, w których fragment nadrzędny jest umieszczany na stosie wstecznym fragmentów, co pozwala uniknąć problemów z komunikatem „Nie znaleziono widoku o podanym identyfikatorze” podczas powrotu do tego fragmentu. (I94608, b/347706985) - [Z Fragmentu 1.8.2] Fragmenty dodane za pomocą metody
FragmentTransaction.add, która przyjmujeViewGroup, czekają teraz naonContainerAvailable, zanim przejdą doonStart(). Ma to wpływ na użytkowników tego interfejsu API, np.AndroidFragment, który teraz czeka, ażAndroidFragmentponownie wejdzie w składonStart(). (I94608, b/347706985) - [Z Fragmentu 1.8.1] Rozwiązaliśmy problem, który powodował, że fragment bez kontenera był natychmiast NISZCZONY podczas rozpoczynania gestu przewidywanego przejścia wstecz. (If6b83, b/345244539)
Wkład zewnętrzny
- Scal fragment-ktx z biblioteką fragmentów. Wszystkie rozszerzenia Kotlin są teraz częścią głównego artefaktu fragmentu. fragment-ktx jest teraz pustym artefaktem zapewniającym zgodność. Dziękujemy Jake Wharton! (Idabaa)
Wersja 1.8
Wersja 1.8.9
13 sierpnia 2025 r.
Publikacja androidx.fragment:fragment-*:1.8.9 Wersja 1.8.9 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że anulowanie gestu przewidywanego przejścia wstecz, który powoduje ukrycie, sprawiało, że kolejny gest nie był animowany prawidłowo podczas korzystania z animatorów. (I0a400, b/384765586)
- Rozwiązaliśmy problem, który powodował, że połączenie
setMaxLifecycleipopBackStackmogło nie przenieść górnego fragmentu do stanu RESUMED. (I3448b, b/406127576)
Wersja 1.8.8
4 czerwca 2025 r.
Publikacja androidx.fragment:fragment-*:1.8.8 Wersja 1.8.8 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię
FragmentManagerpodczas próby zapisania stanu fragmentów dodanych za pomocąsetMaxLifecycle(Lifecycle.State.INITIALIZED). Te fragmenty, ponieważ nigdy nie przeszły przezonCreate(), nie mają już zapisanego stanu ani wywołanej funkcjionSaveInstanceState(). (I6e37a)
Wersja 1.8.7
20 maja 2025 r.
Publikacja androidx.fragment:fragment-*:1.8.7 Wersja 1.8.7 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z nieprawidłowym stanem
FragmentManagerpo operacjach pop i replace w tej samej ramce, który mógł powodować awarię w połączeniu z usunięciem elementów z listy wstecznej za pomocąpopBackStacklub gestu przewidywanego przejścia wstecz. (I50ad1) - Naprawiono awarię spowodowaną używaniem przejść AndroidX i sytuacją, w której szybkie, kolejne transakcje fragmentów próbują anulować nierozpoczęte przejście, a biblioteka przejść AndroidX nie czyści prawidłowo stanu przejścia. (patrz b/414612221). (Ib5235)
Wersja 1.8.6
12 lutego 2025 r.
Publikacja androidx.fragment:fragment-*:1.8.6 Wersja 1.8.6 zawiera te zmiany.
Poprawki błędów
- Zastąpienie
FragmentContainerViewsetOnApplyWindowInsetsListenerprzyjmuje teraz wartość null dla odbiornika, co jest zgodne z tym, co dopuszcza platforma. (I575f0, b/282790626)
Wersja 1.8.5
30 października 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.5 Wersja 1.8.5 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z
IllegalStateExceptionwywoływanym przezsaveBackStacktylko po anulowaniu lub przerwaniu gestu przewidywanego przejścia wstecz. (I3387d, b/342419080)
Wersja 1.8.4
2 października 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.4 Wersja 1.8.4 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię fragmentów podczas korzystania z przejść Androidx, gdy użytkownik szybko naciskał przycisk Wstecz lub wykonywał gest cofania. (Ibc038, b/364804225)
- Rozwiązaliśmy problem we fragmentach, który powodował, że przerwanie gestu przewidywanego przejścia wstecz powodowało przejście menedżera fragmentów w niezdefiniowany stan, a nawet wyświetlanie nieprawidłowego fragmentu. (If82e2, b/338624457)
- Naprawiono
UninitializedPropertyAccessExceptionwAndroidFragmentpodczas dynamicznej zamiany klasy, z której korzysta instancjaAndroidFragment. (I12dea)
Wersja 1.8.3
4 września 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.3 Wersja 1.8.3 zawiera te zatwierdzenia.
Poprawki błędów
FragmentManagerprawidłowo uwzględnia teraz oczekujące operacje podczas obsługi gestu przewidywanego przejścia wstecz. Dzięki temu cofnięcie w systemie nie będzie już powodowaćIndexOutOfBoundsException. (I9ba32, b/342316801)AndroidFragmentnie ulega już awarii, jeśli zostanie dodany do kompozycji, gdy stan zawierającej go aktywności lub fragmentu jest już zapisany. (I985e9, b/356643968)
Wersja 1.8.2
24 lipca 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.2 Wersja 1.8.2 zawiera te zatwierdzenia.
Poprawki błędów
AndroidFragmentprawidłowo obsługuje teraz przypadki, w których fragment nadrzędny jest umieszczany na liście fragmentów, co pozwala uniknąć problemów z komunikatem „Nie znaleziono widoku o podanym identyfikatorze” podczas powrotu do tego fragmentu. (I94608)- Fragmenty dodane za pomocą metody
FragmentTransaction.add, która przyjmujeViewGroup, czekają teraz naonContainerAvailable, zanim przejdą doonStart(). Ma to wpływ na użytkowników tego interfejsu API, np.AndroidFragment, który teraz czeka, ażAndroidFragmentponownie wejdzie w skład, zanim przeniesie go przezonStart(). (I94608)
Wersja 1.8.1
26 czerwca 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.1 Wersja 1.8.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że fragmenty bez kontenera były natychmiast
DESTROYEDpodczas rozpoczynania gestu przewidywanego powrotu. Teraz są one w stanieCREATEDdo czasu zakończenia gestu. (If6b83, b/345244539)
Wersja 1.8.0
12 czerwca 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.0 Wersja 1.8.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.7.0
- Artefakt
fragment-composezawiera terazAndroidFragmentComposable, który umożliwia dodawanie fragmentów do hierarchii Compose za pomocą nazwy klasy fragmentu. Automatycznie zapisuje i przywraca stan fragmentu. Należy go używać jako bezpośredniego zamiennika wcześniej zalecanego podejścia polegającego na użyciuAndroidViewBindingdo powiększenia fragmentu. - Wywołanie zwrotne
onBackStackChangeCancelledw interfejsieOnBackStackChangedListenerusługiFragmentManagerjest teraz wywoływane w ramach wykonywania operacji w usłudzeFragmentManager, co zbliża je do czasu wywołania zwrotnegoonBackStackChangeCommitted.
Wersja 1.8.0-rc01
29 maja 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.0-rc01 Wersja 1.8.0-rc01 zawiera te zmiany.
Poprawki błędów
- Wywołanie zwrotne
onBackStackChangeCancelledw interfejsieFragmentManagers OnBackStackChangedListenerjest teraz wywoływane w ramach wykonywania operacji wFragmentManager, co zbliża je do czasu wywołania zwrotnegoonBackStackChangeCommitted. (I5ebfb, b/332916112)
Wersja 1.8.0-beta01
14 maja 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.0-beta01 Wersja 1.8.0-beta01 zawiera te zmiany.
Poprawki błędów
- W fragmencie
1.7.1: przewidywane przejście wstecz będzie teraz działać tylko w przypadku transakcji, w których wszystkie fragmenty mają animator lub przejście Androidx z możliwością przewijania. Rozwiązaliśmy problem, który powodował, że anulowanie transakcji, w której można było częściowo przewijać, powodowało wyświetlanie czarnego ekranu. (I43037, b/339169168)
Wersja 1.8.0-alpha02
17 kwietnia 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.0-alpha02 Wersja 1.8.0-alpha02 zawiera te zmiany.
Poprawki błędów
- Fragment
1.7.0-rc02: dodano logi, które wskazują, dlaczego ustawieniesharedElementbez innych przejść nie będzie działać. (Iec48e) - Z Fragment
1.7.0-rc02: naprawiliśmy błąd, który powodował awarię, gdy do transakcji, w której wszystkie inne przejścia były możliwe do przewijania, dodano element współdzielony, którego nie można było przewijać. Transakcja będzie teraz prawidłowo uznawana za nieprzeszukiwalną. (I18ccd)
Wersja 1.8.0-alpha01
3 kwietnia 2024 r.
Publikacja androidx.fragment:fragment-*:1.8.0-alpha01 Wersja 1.8.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Nowa funkcja
AndroidFragmentComposableumożliwia dodawanie fragmentów do hierarchii Compose za pomocą nazwy klasy fragmentu. Automatycznie zapisuje i przywraca stan fragmentu. Można go używać jako bezpośredniego zamiennika AndroidViewBindingComposable.(b/312895363, Icf841)
Zmiany w dokumentacji
- Zaktualizowaliśmy dokumentację interfejsów API
OnBackStackChangedListener, aby wskazać, kiedy są one wywoływane i jak należy ich używać. (I0bfd9)
Aktualizacja zależności
- Fragment zależy teraz od instalatora profilu w wersji 1.3.1.
Wersja 1.7
Wersja 1.7.1
14 maja 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.1 Wersja 1.7.1 zawiera te zmiany.
Poprawki błędów
- Przewidywane przejście wstecz będzie teraz działać tylko w przypadku transakcji, w których wszystkie fragmenty mają animator lub przejście Androidx z możliwością wyszukiwania. Rozwiązaliśmy problem, który powodował, że anulowanie transakcji z możliwością częściowego przewijania powodowało wyświetlanie pustego ekranu. (I43037, b/339169168)
Wersja 1.7.0
1 maja 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0 Wersja 1.7.0 zawiera te zmiany.
Obsługa gestu przewidywanego przejścia wstecz
- Fragmenty obsługują teraz predykcyjne cofanie w aplikacji, gdy używasz
Animatorlub AndroidX Transition 1.5.0. Dzięki temu użytkownicy mogą cofnąć się do poprzedniego fragmentu, przewijając animację lub przejście, zanim zdecydują, czy dokończyć gest i zatwierdzić transakcję, czy ją anulować.
| System przejściowy | Zasób XML | Obsługa przewidywanego przejścia wstecz |
|---|---|---|
Animation |
R.anim |
Nie |
Animator |
R.animator |
Tak |
Platforma Transition |
R.transition |
Nie |
AndroidX Transition z Transition w wersji 1.4.1 lub starszej |
R.transition |
Nie |
AndroidX Transition z Transition 1.5.0 |
R.transition |
Tak |
Jeśli po włączeniu gestu przewidywanego przejścia wstecz zauważysz problemy z obsługą przewidywanego przejścia wstecz w fragmentach, zgłoś problem dotyczący Fragmentu, dołączając przykładowy projekt, w którym występuje ten problem. Możesz wyłączyć przewidywane przejście wstecz, używając FragmentManager.enabledPredictiveBack(false) w onCreate() Activity.
FragmentManager.OnBackStackChangedListener() udostępnia teraz odpowiednio onBackStackChangeProgressed() i onBackStackChangeCancelled() do odbierania informacji o postępie przewidywanego przejścia wstecz i anulowanych zdarzeniach.
Fragment Compose Artifact
Utworzyliśmy nowy artefakt fragment-compose, który ma na celu wspieranie aplikacji przechodzących z architektury opartej na fragmentach na architekturę opartą w pełni na Compose.
Pierwszą funkcją dostępną w tym nowym artefakcie jest content metoda rozszerzenia w Fragment, która ułatwia korzystanie z Compose w interfejsie poszczególnych fragmentów przez utworzenie ComposeView i ustawienie prawidłowego ViewCompositionStrategy.
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)
}
}
Wersja 1.7.0-rc02
17 kwietnia 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-rc02 Wersja 1.7.0-rc02 zawiera te zmiany.
Poprawki błędów
- Dodano logi, które wskazują, dlaczego ustawienie
sharedElementbez innych przejść nie zostanie uruchomione. (Iec48e) - Usunęliśmy błąd polegający na tym, że jeśli do transakcji, w której wszystkie inne przejścia były możliwe do przewinięcia, dodano element udostępniony, którego nie można przewinąć, następowało awaryjne zamknięcie aplikacji. Transakcja będzie teraz prawidłowo uznawana za nieprzeszukiwalną. (I18ccd)
Wersja 1.7.0-rc01
3 kwietnia 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.
Aktualizacja zależności
- Fragment zależy teraz od instalatora profilu w wersji 1.3.1.
Wersja 1.7.0-beta01
20 marca 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-beta01 Wersja 1.7.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
FragmentHostCallbackjest teraz napisany w języku Kotlin, dzięki czemu dopuszczalność wartości null typu ogólnego Host jest zgodna z dopuszczalnością wartości null typu zwracanego przezonGetHost(). (I40af5)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że po wykonaniu gestu przewidywanego przejścia wstecz na fragmencie, który nie znajduje się w kontenerze, fragment ten nigdy nie był niszczony. Fragment zostanie natychmiast przeniesiony do stanu końcowego. (Ida0d9)
- Rozwiązaliśmy problem w fragmentach, który powodował, że przerwanie przychodzących przejść gestem przewidywania powrotu niszczyło widok wejściowy i pozostawiało pusty ekran. (Id3f22, b/319531491)
Wersja 1.7.0-alpha10
7 lutego 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha10 Wersja 1.7.0-alpha10 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy znany problem z poprzedniej wersji Fragmentu, który powodował, że w przypadku korzystania z obsługi przewidywanego powrotu w Fragmentach w przypadku
Animatorlub AndroidX Transition Fragmenty zgłaszały błądNullPointerExceptionzhandleOnBackProgressed, jeśli nigdy nie dodanoFragmentManager.OnBackStackChangedListenerza pomocąaddOnBackStackChangedListener. (I7c835)
Wersja 1.7.0-alpha09
24 stycznia 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha09 Wersja 1.7.0-alpha09 zawiera te zatwierdzenia.
Fragment Compose Artifact
Utworzyliśmy nowy artefakt fragment-compose, który ma na celu wspieranie aplikacji przechodzących z architektury opartej na fragmentach na architekturę opartą w pełni na Compose.
Pierwszą funkcją dostępną w tym nowym artefakcie jest content metoda rozszerzenia w Fragment, która ułatwia korzystanie z Compose w interfejsie poszczególnych fragmentów przez utworzenie ComposeView i ustawienie prawidłowego 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 odpowiednioonBackStackChangeProgressed()ionBackStackChangeCancelled()do odbierania informacji o postępie przewidywanego przejścia wstecz i anulowanych zdarzeniach. (214b87)
Znany problem
- Jeśli używasz obsługi funkcji przewidywania powrotu Fragmentu w przypadku
Animatorlub przejścia AndroidX, Fragmenty będą zgłaszać wyjątekNullPointerExceptionzhandleOnBackProgressed, jeśli nigdy nie dodanoFragmentManager.OnBackStackChangedListenerza pomocąaddOnBackStackChangedListener. Ręczne dodanie detektora pozwoli uniknąć awarii. Poprawka będzie dostępna w kolejnej wersji Fragmentów.
Wersja 1.7.0-alpha08
10 stycznia 2024 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha08 Wersja 1.7.0-alpha08 zawiera te zatwierdzenia.
Czyszczenie danych
- Usunięto obejście problemu z biblioteką przejść, który został rozwiązany w Transition
1.5.0-alpha06. (I04356)
Wersja 1.7.0-alpha07
29 listopada 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha07 Wersja 1.7.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd
NullPointerException, który był spowodowany ustawieniem przejścia elementu udostępnionego i nieustawieniem przejścia wejścia/wyjścia. (I8472b) - Z Fragmentu
1.6.2: gdy fragmentFragmentContainerViewjest rozwijany, jego stany, takie jakFragmentManager, Host i id, są teraz dostępne w wywołaniu zwrotnymonInflate. (I1e44c, b/307427423) - Z Fragment
1.6.2: gdy używaszclearBackStackdo usuwania zestawu fragmentów, wszystkie zagnieżdżone fragmentyViewModelbędą teraz czyszczone, gdy wyczyszczone zostaną fragmenty nadrzędneViewModels. (I6d83c, b/296173018)
Wersja 1.7.0-alpha06
4 października 2023 roku
Publikacja androidx.fragment:fragment-*:1.7.0-alpha06 Wersja 1.7.0-alpha06 zawiera te zatwierdzenia.
Aktualizacja zależności
- Fragmenty zostały zaktualizowane, aby zależeć od nowego
animateToStartinterfejsu API dodanego w Transition1.5.0-alpha04.
Wersja 1.7.0-alpha05
20 września 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha05 Wersja 1.7.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Fragmenty obsługują teraz funkcję przewidywanego przejścia wstecz podczas korzystania z przejść Androidx. Dzięki temu możesz użyć gestu cofania, aby przejść do poprzedniego fragmentu za pomocą niestandardowego przejścia Androidx, zanim zdecydujesz się zatwierdzić lub anulować transakcję za pomocą ukończonego gestu. Aby włączyć tę funkcję, musisz korzystać z wersji Przejście
1.5.0-alpha03. (Ib49b4, b/285175724)
Znane problemy
- Obecnie występuje problem, który powoduje, że po anulowaniu gestu cofania z przejściem następnym razem, gdy zaczniesz wykonywać ten gest, przejście nie zostanie uruchomione, co spowoduje wyświetlenie pustego ekranu. Może to być spowodowane problemem w bibliotece Transition. (b/300157785). Jeśli wystąpi ten problem, zgłoś go w odniesieniu do komponentu Fragment, dołączając przykładowy projekt, w którym występuje. Możesz wyłączyć przewidywane przejście wstecz, używając
FragmentManager.enabledPredictiveBack(false)wonCreate()Activity.
Wersja 1.7.0-alpha04
6 września 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha04 Wersja 1.7.0-alpha04 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który występował podczas anulowania gestu przewidywanego przejścia wstecz i polegał na tym, że fragmenty nie osiągały prawidłowego stanu cyklu życia. (I7cffe, b/297379023)
- Usunęliśmy regresję, która umożliwiała uruchamianie animacji z przejściami. (I59f36)
- Rozwiązaliśmy problem z używaniem funkcji przewidywanego powrotu we fragmentach, który powodował awarię, gdy użytkownik próbował szybko dwukrotnie cofnąć się we fragmencie przedostatnim na stosie wstecznym. (Ifa1a4)
Wersja 1.7.0-alpha03
23 sierpnia 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z fragmentami podczas korzystania z przewidywanego przejścia wstecz, który powodował pomijanie pierwszego fragmentu w stosie wstecznym menedżera fragmentów i zakończenie działania, gdy użytkownik korzystał z systemowego przycisku Wstecz w przypadku nawigacji za pomocą 3 przycisków lub gestu przewidywanego przejścia wstecz. (I0664b, b/295231788)
Wersja 1.7.0-alpha02
9 sierpnia 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Jeśli używasz fragmentów z gestami przewidywania powrotu z API 34 i systemu przejść, który nie obsługuje wyszukiwania (
Animations,Transitions), lub nie używasz żadnych przejść, fragmenty będą teraz czekać na zakończenie gestu przed wykonaniem działania powrotu. (I8100c)
Wersja 1.7.0-alpha01
7 czerwca 2023 r.
Publikacja androidx.fragment:fragment-*:1.7.0-alpha01 Ta wersja jest opracowywana w gałęzi wewnętrznej.
Nowe funkcje
- Fragmenty obsługują teraz przewidywane przejście wstecz w aplikacji podczas korzystania z
Animator. Dzięki temu możesz użyć gestu przejścia wstecz, aby zobaczyć poprzedni fragment z niestandardowym animatorem, zanim zdecydujesz, czy chcesz zatwierdzić transakcję za pomocą ukończonego gestu, czy ją anulować. Możesz też wyłączyć to nowe zachowanie, używając eksperymentalnego parametruenablePredictiveBack()i przekazując wartośćfalse.
Wersja 1.6
Wersja 1.6.2
1 listopada 2023 roku
Publikacja androidx.fragment:fragment-*:1.6.2 Wersja 1.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Gdy fragment
FragmentContainerViewjest rozwijany, jego stany, takie jakFragmentManager, Host i id, są teraz dostępne w wywołaniu zwrotnymonInflate. (I1e44c, b/307427423) - Gdy używasz
clearBackStackdo usuwania zestawu fragmentów, wszystkie zagnieżdżone fragmentyViewModelsą teraz czyszczone, gdy czyszczone sąViewModelsfragmentu nadrzędnego. (I6d83c, b/296173018)
Wersja 1.6.1
26 lipca 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.1 Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że zapisany stan przechowywany po zatrzymaniu, ale nie usunięciu aktywności był nieprawidłowo zapisywany w pamięci podręcznej nawet po przywróceniu instancji fragmentu do stanu
RESUMED. Spowoduje to ponowne użycie stanu zapisanego w pamięci podręcznej, jeśli instancja fragmentu znajdowała się na liście wstecznej podczas używania interfejsu API wielu list wstecznych do zapisywania i przywracania tego fragmentu. (I71288, b/246289075)
Aktualizacja zależności
- Fragment zależy teraz od Activity w wersji 1.7.2. Rozwiązaliśmy problem, który powodował, że użytkownicy języka Kotlin nie mogli rozszerzać klasy
ComponentDialogbez jawnej zależności od klasy Activity. (b/287509323)
Wersja 1.6.0
7 czerwca 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0 Wersja 1.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.5.0
- Zapisany stan
Fragmentzostał całkowicie podzielony na stan biblioteki prywatnej (niestandardowe klasyParcelable) i stan dostarczony przez dewelopera, który jest teraz zawsze przechowywany w obiekcieBundle, co pozwala dokładnie określić, skąd pochodzi stan fragmentu. - Interfejs
FragmentManager.OnBackStackChangedListenerzostał rozszerzony o 2 dodatkowe wywołania zwrotne:onBackStackChangeStartedionBackStackChangeCommitted. Są one wywoływane odpowiednio z każdymFragmenttuż przed dodaniem lub usunięciem z listy fragmentów i bezpośrednio po zatwierdzeniu transakcji. FragmentStrictModedodał nowyWrongNestedHierarchyViolation, który wykrywa, kiedy fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodany dochildFragmentManagerelementu nadrzędnego.- Interfejsy API
FragmentiFragmentManager, które przyjmują argumentyIntentlubIntentSender, są teraz prawidłowo oznaczone adnotacją@NonNull, aby zapobiec przekazywaniu wartości null, ponieważ zawsze powoduje to natychmiastowe awarie odpowiednich interfejsów API platformy Android, do których te metody się odwołują. DialogFragmentudostępnia teraz dostęp do podstawowegoComponentDialogza pomocą interfejsurequireComponentDialog()API.- Fragment zależy teraz od Lifecycle
2.6.1. - Fragment zależy teraz od SavedState
1.2.1. - Fragment zależy teraz od ProfileInstaller
1.3.0. Artefakt
fragment-testing-manifestoddziela wpisy w pliku 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 spowodowanych różnicami w wersjach między
fragment-testingaandroidx.test.
Wersja 1.6.0-rc01
10 maja 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował wysyłanie
ActivityResultz nieprawidłowym kodem żądania, gdy wysłano kilka kolejnych żądaństartActivityForResult. (If0b9d, b/249519359) - Rozwiązaliśmy problem, który powodował, że wywołania zwrotne
onBackStackChangeListenerbyły wysyłane w przypadku transakcji, które w rzeczywistości nie zmieniały stosu wstecznego, jeśli były połączone z transakcjami, które go zmieniały. (I0eb5c, b/279306628)
Wersja 1.6.0-beta01
19 kwietnia 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Użycie
postponeEnterTransitionz limitem czasu, a następnie zastąpienie odroczonego fragmentu nie powoduje już wycieku odroczonego fragmentu. (I2ec7d, b/276375110) - Nowe wywołania zwrotne
onBackStackChangeStartedionBackStackChangeCommittedbędą teraz wysyłać fragment tylko raz, nawet jeśli wiele transakcji zawiera ten sam fragment. (Ic6b69)
Wersja 1.6.0-alpha09
5 kwietnia 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-alpha09 Wersja 1.6.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
DialogFragmentudostępnia teraz dostęp do podstawowegoComponentDialogza pomocą interfejsurequireComponentDialog()API. (I022e3, b/234274777)- Interfejsy API fragmentów
commitNow(),executePendingTransactions()ipopBackStackImmediate()zostały oznaczone adnotacją@MainThread, co oznacza, że będą teraz zgłaszać błędy kompilacji, gdy nie są wywoływane z głównego wątku, zamiast czekać na niepowodzenie w czasie działania. (Ic9665, b/236538905)
Poprawki błędów
- Naprawiliśmy błąd w
FragmentManager, który powodował awarię podczas zapisywania i przywracania w tej samej ramce. (Ib36af, b/246519668) - Wywołania zwrotne
OnBackStackChangedListeneronBackStackChangeStartedionBackStackChangeCommittedsą teraz wykonywane tylko wtedy, gdy zmieni sięFragmentManagerstos wsteczny. (I66055, b/274788957)
Wersja 1.6.0-alpha08
22 marca 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-alpha08 Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.
Zmiana zachowania
- Czas wywołania zwrotnego
OnBackStackChangedListener.onBackStackChangeCommitedzostał dostosowany tak, aby wywoływać go przed wykonaniem operacji na fragmentach. Dzięki temu wywołanie zwrotne nigdy nie otrzyma odłączonego fragmentu. (I66a76, b/273568280)
Poprawki błędów
- Z Fragment
1.5.6: rozwiązaliśmy problem, który powodował, że wywoływanie funkcjiclearFragmentResultListenerw funkcjisetFragmentResultListenernie działało, jeśli funkcjaLifecyclebyła jużSTARTEDi wynik był już dostępny. (If7458)
Aktualizacje zależności
- Fragment zależy teraz od Lifecycle
2.6.1. (586fe7) - Fragment zależy teraz od SavedState
1.2.1. (078e4e) - Fragment zależy teraz od ProfileInstaller
1.3.0. (3fc05b)
Wersja 1.6.0-alpha07
8 marca 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.
Poprawki błędów
- Fragment
1.5.6: rozwiązaliśmy problem, który powodował, że usunięcie dowolnego fragmentu, niezależnie od tego, czy dodano do niego elementy menu, unieważniało menu aktywności. (50f098, b/244336571)
Wersja 1.6.0-alpha06
22 lutego 2023 roku
Publikacja androidx.fragment:fragment-*:1.6.0-alpha06 Wersja 1.6.0-alpha06 zawiera te zatwierdzenia.
Zmiana zachowania
- Nowe wywołanie zwrotne
onBackStackChangedStartedwFragmentManageronBackStackChangedListenerbędzie teraz wykonywane, zanim fragmenty zaczną przechodzić do stanów docelowych. (I34726)
Wersja 1.6.0-alpha05
8 lutego 2023 r.
Publikacja androidx.fragment:fragment-*:1.6.0-alpha05 Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Interfejs
FragmentManager.OnBackStackChagnedListeneroferuje teraz 2 dodatkowe wywołania zwrotne:onBackStackChangeStartedionBackStackChangeCommitted, które umożliwiają przekazywanie dodatkowych informacji i kontrolę, gdy wFragmentManagernastąpią zmiany w stosie wstecznym. (Ib7ce5, b/238686802)
Zmiany w interfejsie API
- Interfejsy API
FragmentiFragmentManager, które przyjmują argumentyIntentlubIntentSender, są teraz prawidłowo oznaczone adnotacją@NonNull, aby zapobiec przekazywaniu wartości null, ponieważ zawsze powoduje to natychmiastowe awarie odpowiednich interfejsów API platformy Android, do których te metody się odwołują. (I06fd4)
Wersja 1.6.0-alpha04
7 grudnia 2022 r.
Publikacja androidx.fragment:fragment-*:1.6.0-alpha04 Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
FragmentStrictModedodano nowyWrongNestedHierarchyViolation, który wykrywa, kiedy fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodany dochildFragmentManagerelementu nadrzędnego. (I72521, b/249299268)
Zmiany w zachowaniu
- Fragmenty przywracają teraz swój stan
SavedStateRegistryprzedonAttach(), dzięki czemu jest on dostępny we wszystkich metodach cyklu życia w górę. (I1e2b1)
Zmiany w interfejsie API
- Artefakt
fragment-testing-manifestoddziela wpisy w pliku 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 spowodowanych różnicami w wersjach między fragment-testing a androidx.test.(I8e534, b/128612536)
Poprawki błędów
- Z Fragment
1.5.5: fragmenty nie będą już nieprawidłowo zapisywać stanuViewModeljako części stanu zapisanego w rejestrze widoków. (I10d2b, b/253546214)
Wersja 1.6.0-alpha03
5 października 2022 r.
androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 i androidx.fragment:fragment-testing:1.6.0-alpha03 są udostępnione. Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Klasy rozszerzające
DialogFragmentbędą teraz musiały wywoływać super w swoich zastąpieniachonDismiss(). (I14798, b/238928865)
Poprawki błędów
- Naprawiono regresje spowodowane integracją nowych interfejsów wywołania zwrotnego dostawcy (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider), aby zapewnić, że fragmenty zawsze otrzymują odpowiednie wywołania zwrotne. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Wersja 1.6.0-alpha02
24 sierpnia 2022 r.
androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 i androidx.fragment:fragment-testing:1.6.0-alpha02 są udostępnione. Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
- Z Fragmentu
1.5.2: rozwiązano problem, który powodował, że jednoczesne wykonywanie transakcjipopBackStack()ireplace()mogło sprawić, że fragmenty wychodzące uruchamiały nieprawidłoweAnimation/Animator. (Ib1c07, b/214835303)
Wersja 1.6.0-alpha01
27 lipca 2022 roku
androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 i androidx.fragment:fragment-testing:1.6.0-alpha01 są udostępnione. Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.
Zmiany w zachowaniu
- Zapisany stan
Fragmentzostał całkowicie podzielony na stan biblioteki prywatnej (niestandardowe klasyParcelable) i stan dostarczony przez dewelopera, który jest teraz zawsze przechowywany w obiekcieBundle, co pozwala dokładnie określić, skąd pochodzi stan fragmentu. (b/207158202)
Poprawki błędów
- Z Fragmentu
1.5.1: naprawiono regresję wDialogFragmentCallbacksDetector, w której użycie wersji narzędzia lint dołączonej do AGP 7.4 powodowało awarię tego narzędzia. (b/237567009)
Aktualizacja zależności
- Z Fragment
1.5.1: biblioteka Fragment jest teraz zależna od Lifecycle2.5.1. (Id204c) - Z Fragment
1.5.1: biblioteka Fragment jest teraz zależna od Activity1.5.1. (I10f07)
Wersja 1.5
Wersja 1.5.7
19 kwietnia 2023 r.
androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 i androidx.fragment:fragment-testing:1.5.7 są udostępnione. Wersja 1.5.7 zawiera te zatwierdzenia.
Poprawki błędów
- Użycie
postponeEnterTransitionz limitem czasu, a następnie zastąpienie odroczonego fragmentu nie powoduje już wycieku odroczonego fragmentu. (I2ec7d, b/276375110)
Wersja 1.5.6
22 marca 2023 r.
androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 i androidx.fragment:fragment-testing:1.5.6 są udostępnione. Wersja 1.5.6 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że usunięcie dowolnego fragmentu, niezależnie od tego, czy zawierał dodane elementy menu, unieważniało menu aktywności. (50f098, b/244336571)
- Rozwiązaliśmy problem, który powodował, że wywoływanie funkcji
clearFragmentResultListenerw funkcjisetFragmentResultListenernie działało, jeśli funkcjaLifecyclebyła jużSTARTEDi wynik był już dostępny. (If7458)
Wersja 1.5.5
7 grudnia 2022 r.
androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 i androidx.fragment:fragment-testing:1.5.5 są udostępnione. Wersja 1.5.5 zawiera te zatwierdzenia.
Poprawki błędów
- Fragmenty nie będą już nieprawidłowo zapisywać stanu
ViewModelw ramach zapisanego stanu rejestru widoków. (I10d2b, b/253546214)
Wersja 1.5.4
24 października 2022 r.
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 i androidx.fragment:fragment-testing:1.5.4 są udostępnione. Wersja 1.5.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że użycie niestandardowego
FragmentControllerz hostem, który nie implementuje interfejsu wywołania zwrotnego dostawcy (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider), i wywołanie jego wycofanej funkcji dispatch nie powodowało przekazywania do fragmentów podrzędnych. (I9b380)
Wersja 1.5.3
21 września 2022 r.
androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 i androidx.fragment:fragment-testing:1.5.3 są udostępnione. Wersja 1.5.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że fragmenty na stosie wstecznym otrzymywał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.
androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 i androidx.fragment:fragment-testing:1.5.2 są udostępnione. Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że jednoczesne wykonywanie transakcji
popBackStack()ireplace()mogło powodować uruchamianie przez fragmenty wyjściowe nieprawidłowych funkcjiAnimation/Animator. (Ib1c07, b/214835303)
Wersja 1.5.1
27 lipca 2022 roku
androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 i androidx.fragment:fragment-testing:1.5.1 są udostępnione. Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono regresję w
DialogFragmentCallbacksDetector, w której użycie wersji lint dołączonej do AGP 7.4 powodowało awarię lint. (b/237567009)
Aktualizacja zależności
- Biblioteka Fragment jest teraz zależna od Lifecycle
2.5.1. (Id204c) - Biblioteka Fragment zależy teraz od Activity
1.5.1. (I10f07)
Wersja 1.5.0
29 czerwca 2022 r.
androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 i androidx.fragment:fragment-testing:1.5.0 są udostępnione. Wersja 1.5.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.4.0
- Integracja CreationExtras –
Fragmentmoże teraz udostępniać bezstanowyViewModelProvider.Factoryza pomocą cyklu życia2.5.0CreationExtras. - Integracja okna komponentu –
DialogFragmentużywa terazComponentDialogza pomocą aktywności1.5.0jako domyślnego okna zwracanego przezonCreateDialog(). - Refaktoryzacja zapisanego stanu instancji – fragmenty zaczęły zmieniać sposób zapisywania stanu instancji. Ma to na celu wyraźne określenie, jaki stan został zapisany we fragmencie i skąd pochodzi. Obecne zmiany obejmują:
FragmentManagerzapisuje teraz zapisany stan instancji w obiekcieBundlezamiast bezpośrednio w niestandardowym obiekcieParcelable.- Wyniki ustawione za pomocą
Fragment Result APIs, które nie zostały jeszcze dostarczone, są teraz zapisywane oddzielnie od stanu wewnętrznegoFragmentManager. - Stan powiązany z każdym fragmentem jest teraz zapisywany oddzielnie od stanu wewnętrznego
FragmentManager, co umożliwia powiązanie ilości zapisanego stanu powiązanego z poszczególnym fragmentem z unikalnymi identyfikatorami występującymi w rejestrowaniu debugowaniaFragment.
Inne zmiany
FragmentStrictModeumożliwia teraz prywatnym fragmentom kodu zewnętrznego omijanie określonych kar za naruszenia zasad przez używanieallowViolation()z nazwą klasy.- Interfejsy Fragment API do udostępniania menu w
ActionBaraktywności zostały wycofane. Interfejsy APIMenuHostiMenuProviderdodane w Activity1.4.0zapewniają testowalną powierzchnię interfejsu API, która jest zgodna z cyklem życia i której powinny używać fragmenty.
Wersja 1.5.0-rc01
11 maja 2022 roku
androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 i androidx.fragment:fragment-testing:1.5.0-rc01 są udostępnione. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Refaktoryzacja stanu zapisanej instancji
- Stan powiązany z każdym fragmentem jest teraz zapisywany oddzielnie od stanu wewnętrznego
FragmentManager, co umożliwia powiązanie ilości zapisanego stanu powiązanego z poszczególnym fragmentem z unikalnymi identyfikatorami występującymi w rejestrowaniu debugowania fragmentów. (a153e0, b/207158202)
Wersja 1.5.0-beta01
20 kwietnia 2022 r.
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 i androidx.fragment:fragment-testing:1.5.0-beta01 są udostępnione. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
DialogFragmentdodał nową metodędismissNow, która używacommitNow, aby zapewnić zgodność z funkcjąshowNow. Pamiętaj, że nie spowoduje to natychmiastowego zamknięciaDialog, a jedynie synchroniczną aktualizację stanuFragmentManager. (I15c36, b/72644830)
Refaktoryzacja stanu zapisanej instancji
FragmentManagerzapisuje teraz zapisany stan instancji w obiekcieBundlezamiast bezpośrednio w niestandardowym obiekcieParcelable. To pierwszy krok w kierunku zapewnienia większej przejrzystości w zakresie tego, co jest faktycznie zapisywane przez fragmenty. (I93807, b/207158202)- Wyniki ustawione za pomocą interfejsów Fragment Result API, które nie zostały jeszcze dostarczone, są teraz zapisywane oddzielnie od stanu wewnętrznego
FragmentManager. Dzięki temu będziesz mieć większą przejrzystość w zakresie wyników zapisywanych w ramach stanu zapisanej instancji. (I6ea12, b/207158202)
Wersja 1.5.0-alpha05
6 kwietnia 2022 roku
androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 i androidx.fragment:fragment-testing:1.5.0-alpha05 są udostępnione. Wersja 1.5.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
setHasOptionsMenu()wFragmentzostało wycofane. Do zarządzania menu i jego elementami należy używać nowych interfejsów API menu zgodnie z informacjami o wersji1.5.0-alpha04Fragment. (I7b4b4, b/226438239)
Wersja 1.5.0-alpha04
23 marca 2022 r.
androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 i androidx.fragment:fragment-testing:1.5.0-alpha04 są udostępnione. Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejsy API fragmentów do udostępniania menu w
ActionBaraktywności zostały wycofane, ponieważ ściśle wiążą fragment z aktywnością i nie można ich testować w izolacji. Interfejsy APIMenuHostiMenuProviderdodane w Activity1.4.0-alpha01zapewniają testowalny interfejs API, który uwzględnia cykl życia i którego powinny używać fragmenty. (I50a59, I20758)
Poprawki błędów
SavedStateViewFactoryobsługuje teraz używanieCreationExtrasnawet wtedy, gdy zostało zainicjowane za pomocąSavedStateRegistryOwner. Jeśli podano dodatkowe informacje, zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)
Wersja 1.5.0-alpha03
23 lutego 2022 r.
androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 i androidx.fragment:fragment-testing:1.5.0-alpha03 są udostępnione. Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Możesz teraz przekazywać wartość
CreationExtrasdo funkcjiby viewModels()iby activityViewModels(). (Ibefe7, b/217601110)
Zmiany w zachowaniu
DialogFragmentużywa terazComponentDialogjako domyślnego okna dialogowego zwracanego przezonCreateDialog(). (If3784, b/217618170)
Wersja 1.5.0-alpha02
9 lutego 2022 r.
androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 i androidx.fragment:fragment-testing:1.5.0-alpha02 są udostępnione. Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
FragmentStrictModeumożliwia teraz prywatnym fragmentom kodu zewnętrznego omijanie określonych kar za naruszenia zasad przez używanieallowViolation()z nazwą klasy. (I8f678)
Wersja 1.5.0-alpha01
26 stycznia 2022 r.
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 i androidx.fragment:fragment-testing:1.5.0-alpha01 są udostępnione. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
Fragmentjest teraz zintegrowany z obiektem ViewModel CreationExtras, który został wprowadzony w ramach Lifecycle2.5.0-alpha01. (I3060b, b/207012585)
Poprawki błędów
- Z Fragment
1.4.1:FragmentContainerViewnie zgłasza już wyjątku nieprawidłowego stanu, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140) - Z Fragment
1.4.1: gdy używasz niestandardowej lambdyownerProducerz funkcją leniwąby viewModels(), będzie ona teraz używaćdefaultViewModelProviderFactoryod tego właściciela, jeśli nie podano niestandardowegoViewModelProvider.Factory, zamiast zawsze używać fabryki fragmentu. (I56170, b/214106513) - Naprawiliśmy awarię, która występowała podczas pierwszego dostępu do
ViewModelz wywołania zwrotnegoregisterForActivityResult()wFragment. (Iea2b3)
Wersja 1.4
Wersja 1.4.1
26 stycznia 2022 r.
androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 i androidx.fragment:fragment-testing:1.4.1 są udostępnione. Wersja 1.4.1 zawiera te zatwierdzenia.
Poprawki błędów
FragmentContainerViewnie zgłasza już wyjątku nieprawidłowego stanu, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140)- Gdy używasz niestandardowej lambdy
ownerProducerz funkcją leniwąby viewModels(), będzie ona teraz używaćdefaultViewModelProviderFactoryod właściciela, jeśli nie podano niestandardowegoViewModelProvider.Factory, zamiast zawsze używać fabryki fragmentu. (I56170, b/214106513)
Wersja 1.4.0
17 listopada 2021 r.
androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 i androidx.fragment:fragment-testing:1.4.0 są udostępnione. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Interfejsy
FragmentStrictModeAPI zapewniają sprawdzanie w czasie działania, które umożliwia weryfikację, czy aplikacja lub biblioteki, od których zależy, nie wywołują wycofanych interfejsów API fragmentów. Gdy zostanie wykryte naruszenie, możesz wyświetlić komunikat logu, wywołać własny niestandardowy detektor lub spowodować awarię aplikacji. WartośćFragmentStrictMode.Policy, która określa, jakie kontrole są włączone i jakie „kary” są wywoływane, można ustawić wFragmentManagerza pomocą nowej metodysetStrictModePolicy(). Ta zasada dotyczy tegoFragmentManageri przechodzi na wszystkich podrzędnych menedżerów fragmentów, którzy nie mają własnej, unikalnej zasady. Więcej informacji znajdziesz w sekcji Tryb ścisły w przypadku fragmentów. FragmentContainerViewudostępnia teraz metodęgetFragment(), która zwraca fragment ostatnio dodany do kontenera. Działa to tak samo jakfindFragmentById()z identyfikatoremFragmentContainerView, ale umożliwia łączenie wywołań.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioimplementuje terazCloseable, dzięki czemu możesz używać go z metodąusew języku Kotlin lub try-with-resources.Dodano
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}określa, czy w przejściu między fragmentami ma być włączona standardowa animacja przejścia aktywności zaczerpnięta z motywu.Eksperymentalny interfejs API
FragmentManager.enableNewStateManager(boolean)został usunięty, a jedyną dostępną opcją jest teraz nowy menedżer stanu.
Wiele stosów wstecznych
FragmentManager utrzymuje stos wsteczny składający się z transakcji fragmentów, które używały addToBackStack(). Dzięki temu możesz wycofać te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu za pomocą fragmentów, aby fragmenty mogły odpowiednio przywrócić swój stan.
Ta wersja rozszerza te mechanizmy, udostępniając 3 nowe interfejsy API: FragmentManager, saveBackStack(String name), restoreBackStack(String name) i clearBackStack(String name). Te interfejsy API używają tego samego name co addToBackStack(), aby zapisać stan FragmentTransaction i stan każdego fragmentu dodanego w tych transakcjach. Umożliwiają one późniejsze przywrócenie tych transakcji i ich fragmentów w niezmienionym stanie. Pozwala to skutecznie „przełączać się” między wieloma stosami wstecznymi przez zapisanie bieżącego stosu wstecznego i przywrócenie zapisanego stosu wstecznego.
saveBackStack() działa podobnie do popBackStack(), ponieważ jest asynchroniczne i powoduje odwrócenie („wycofanie”) wszystkich transakcji fragmentów do tej konkretnej nazwy oraz zniszczenie i usunięcie wszystkich dodanych fragmentów, ale różni się od niego w kilku ważnych aspektach:
saveBackStack()zawsze uwzględnia wszystkie osoby.- W przeciwieństwie do metody
popBackStack(), która w przypadku braku określonej nazwy na stosie wstecznym lub podania nazwy o wartości null wycofuje wszystkie transakcje na stosie wstecznym, metodasaveBackStack()nie wykonuje żadnych działań, jeśli wcześniej nie została zatwierdzona transakcja fragmentu za pomocą metodyaddToBackStack()z dokładnie taką samą nazwą o wartości innej niż null. - Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że stan widoku każdego fragmentu jest zapisywany, wywoływana jest funkcja
onSaveInstanceState()każdego fragmentu, a stan jest przywracany. Wszystkie instancjeViewModelpowiązane z tymi fragmentami są zachowywane (i nie jest na nich wywoływana funkcjaonCleared()).
Transakcje fragmentów, które można wykorzystać w przypadku saveBackStack(), muszą spełniać określone kryteria:
- Każda transakcja fragmentu musi używać
setReorderingAllowed(true), aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację. - Zapisany zestaw transakcji musi być samodzielny (tzn. nie może zawierać wyraźnych odwołań do fragmentów spoza tego zestawu), aby można go było przywrócić w dowolnym późniejszym czasie, niezależnie od zmian wprowadzonych w międzyczasie na stosie wstecznym.
- Żaden zapisany fragment nie może być zachowanym fragmentem ani mieć w swoim zbiorze przechodnim fragmentów podrzędnych zachowanego fragmentu. Dzięki temu
FragmentManagernie będzie zwracać żadnych odwołań do zapisanych fragmentów po zapisaniu stosu wstecznego.
Podobnie jak w przypadku funkcji saveBackStack(), restoreBackStack() i clearBackStack(), które odpowiednio przywracają lub czyszczą wcześniej zapisaną listę wstecz, obie te funkcje nie robią nic, jeśli wcześniej nie wywołasz funkcji saveBackStack() z tą samą nazwą.
Więcej informacji znajdziesz w artykule Wiele stosów wstecznych: szczegółowe omówienie.
Wersja 1.4.0-rc01
3 listopada 2021 r.
androidx.fragment:fragment:1.4.0-rc01 wydana bez zmian w stosunku do wersji Fragment 1.4.0-beta01. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Wersja 1.4.0-beta01
27 października 2021 r.
androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 i androidx.fragment:fragment-testing:1.4.0-beta01 są udostępnione. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Fragmenty nadrzędne będą teraz wysyłać
onHiddenChanged()w dół całej hierarchii przed uruchomieniem własnego wywołania zwrotnego. (Iedc20, b/77504618) - Klawiatura będzie teraz automatycznie zamykana podczas przechodzenia z fragmentu z otwartą klawiaturą do fragmentu z widokiem recyklera. (I8b842, b/196852211)
DialogFragmentużywa terazsetReorderingAllowed(true)w przypadku wszystkich transakcji tworzonych podczas wywoływania funkcjishow(),showNow()lubdismiss(). (Ie2c14)- Bardzo długie ostrzeżenie lintera
DetachAndAttachFragmentInSameFragmentTransactionzostało skrócone doDetachAndAttachSameFragment. (e9eca3)
Wersja 1.4.0-alpha10
29 września 2021 r.
androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 i androidx.fragment:fragment-testing:1.4.0-alpha10 są udostępnione. Wersja 1.4.0-alpha10 zawiera te zmiany.
Linter
- Dodano ostrzeżenie
DetachAndAttachFragmentInSameFragmentTransactiondotyczące wykrywania wywoływania funkcjidetach()iattach()na tym samym obiekcieFragmentw tym samym obiekcieFragmentTransaction– ponieważ te uzupełniające się operacje znoszą się wzajemnie, gdy są wykonywane w ramach tej samej transakcji, muszą zostać podzielone na osobne transakcje, aby faktycznie coś zrobić. (aosp/1832956, b/200867930) - Dodano błąd lint
FragmentAddMenuProvider, który poprawia użycie cyklu życia fragmentu na cykl życia widoku fragmentu podczas korzystania z interfejsuaddMenuProviderAPIMenuHost. (aosp/1830457, b/200326272)
Aktualizacje dokumentacji
- Komunikaty o wycofaniu interfejsów API, które są teraz obsługiwane przez interfejsy API wyników aktywności, czyli
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionsionRequestPermissionsResult, zostały rozszerzone o dodatkowe szczegóły. (cce80f) - Wiadomość o wycofaniu
onActivityCreated()w przypadkuFragmentiDialogFragmentzostała rozwinięta i zawiera więcej szczegółów. (224db4)
Wersja 1.4.0-alpha09
15 września 2021 r.
androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 i androidx.fragment:fragment-testing:1.4.0-alpha09 są udostępnione. Wersja 1.4.0-alpha09 zawiera te zatwierdzenia.
Nowe funkcje
- Możesz teraz wywołać funkcję
clearBackStack(name), aby wyczyścić dowolny stan zapisany wcześniej za pomocą funkcjisaveBackStack(name). (I70cd7)
Zmiany w interfejsie API
- Klasa
FragmentContainerViewzostała przepisana w języku Kotlin, co zapewnia, że funkcjagetFragmentbędzie prawidłowo uwzględniać dopuszczalność wartości null. (If694a, b/189629145) - Klasa FragmentStrictMode jest teraz napisana w języku Kotlin (I11767, b/199183506)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że stan fragmentu dodanego za pomocą
setReorderingAllowed(true), a następnie natychmiast usuniętego przed wykonaniem oczekujących transakcji nie był prawidłowo czyszczony. (I8ccb8)
Wersja 1.4.0-alpha08
1 września 2021 roku
androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 i androidx.fragment:fragment-testing:1.4.0-alpha08 są udostępnione. Wersja 1.4.0-alpha08 zawiera te zatwierdzenia.
Poprawki błędów
- Ulepszono
UseRequireInsteadOfGetsprawdzanie kodu, aby lepiej obsługiwać nadmiarowe nawiasy. (I2d865) - Ulepszyliśmy
UseGetLayoutInflatersprawdzanie Lint, aby obsługiwać dodatkowe przypadki brzegowe. (Ie5423)
Wersja 1.4.0-alpha07
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 wydane bez istotnych zmian. Wersja 1.4.0-alpha07 zawiera te zatwierdzenia.
Wersja 1.4.0-alpha06
4 sierpnia 2021 r.
androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 i androidx.fragment:fragment-testing:1.4.0-alpha06 są udostępnione. Wersja 1.4.0-alpha06 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z wieloma stosami wstecznymi, który występował podczas szybkiego przełączania się między nimi i objawiał się jako
IllegalStateExceptionpodczas przywracaniaFragmentTransactionlub jako druga kopia fragmentu. (I9039f) - Rozwiązaliśmy problem polegający na tym, że funkcja
FragmentManagerprzechowywała kopię stanu zapisanego wcześniej za pomocą funkcjisaveBackStack()nawet po przywróceniu tego stanu. (Ied212) - Metoda
dismissAllowingStateLoss()klasyDialogFragmentnie powoduje już awarii, gdy wywołasz ją po zapisaniu stanu podczas dodawania elementu DialogFragment za pomocą metodyshow(FragmentTransaction, String). (I84422)
Wersja 1.4.0-alpha05
21 lipca 2021 r.
androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 i androidx.fragment:fragment-testing:1.4.0-alpha05 są udostępnione. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.
Poprawki błędów
- Z Fragment
1.3.6: widok fragmentu jest teraz prawidłowo ustawiony naGONEpodczas używaniahide(), gdy widok główny ma ustawioną wartośćtransitionGroup=”true”. (aosp/1766655, b/193603427) - Z Fragment
1.3.6:FragmentActivityzawsze odblokowuje teraz zapisany stan jako pierwszą operację w wywołaniach zwrotnych cyklu życia, które zastępuje. (I6db7a)
Aktualizacja zależności
- Od Fragment
1.3.6: fragmenty zależą teraz od Działania1.2.4(I3a66c)
Wersja 1.4.0-alpha04
30 czerwca 2021 r.
androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 i androidx.fragment:fragment-testing:1.4.0-alpha04 są udostępnione. Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
FragmentManagerużywa terazSavedStateRegistrydo zapisywania stanu. MetodysaveAllState()irestoreSavedState()zostały też wycofane wFragmentController. Jeśli używaszFragmentControllerdo hostowania fragmentów pozaFragmentActivity,FragmentHostCallbackspowinien implementowaćSavedStateRegistryOwner. (Iba68e, b/188734238)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wywołanie funkcji
saveBackStack()w ramach obsługi wielu stosów wstecznych kończyło się niepowodzeniem, gdy było wykonywane w tym samym czasie co uruchamianie funkcjiFragmentTransaction, która korzystała z funkcjireplace(). (I73137) - Naprawiono
NullPointerException, który występował po ręcznym przywróceniu zapisanego stosu wstecznego zawierającego wiele transakcji podczas korzystania z interfejsurestoreBackStack()API do obsługi wielu stosów wstecznych. Rozwiązaliśmy też problem polegający na tym, żesetReorderingAllowed(true)nie było sprawdzane w przypadku wszystkich transakcji. (I8c593) - Rozwiązaliśmy problem, który powodował, że
FragmentManagernieprawidłowo przywracał wcześniej zapisany stan fragmentów nawet po ich usunięciu zFragmentManager, co powodowało ciągłe powiększanie się zapisanego stanu. (I1fb8e)
Wersja 1.4.0-alpha03
16 czerwca 2021 r.
androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 i androidx.fragment:fragment-testing:1.4.0-alpha03 są udostępnione. Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Wszystkie klasy Fragment StrictMode
Violationzostały zaktualizowane i zawierają teraz bardziej szczegółowe komunikaty o błędach, które wyjaśniają szczegóły naruszenia. (b/187871638)FragmentTagUsageViolationzawiera teraz bardziej szczegółowy komunikat o błędzie, który zawiera kontener nadrzędny, do którego miał zostać dodany fragment. (Ic33a7)WrongFragmentContainerViolationma teraz bardziej szczegółowy komunikat o błędzie, który zawiera kontener, do którego dodawany był fragment. (Ib55f8)- Klasy przypadków użycia dla
TargetFragmentUsageViolationmają teraz bardziej szczegółowe komunikaty o błędach, które zawierają fragment powodujący naruszenie i wszelkie inne zawarte w nim informacje. (Icc6ac) - Klasy rozszerzające
RetainInstanceUsageViolationmają teraz bardziej szczegółowe komunikaty o błędach, które zawierają fragment powodujący naruszenie. (I6bd55) FragmentReuseViolationzawiera teraz bardziej szczegółowy komunikat o błędzie, który zawiera poprzedni identyfikator fragmentu. (I28ce2)SetUserVisibleHintViolationma teraz bardziej szczegółowy komunikat o błędzie, który zawiera informację o tym, na jaką wartość ustawiono widoczną wskazówkę dla użytkownika. (Ib2d5f)
Zmiany w zachowaniu
- Cofnięto ograniczenie dotyczące wywoływania
fitsSystemWindowsna urządzeniuFragmentContainerView– nie powoduje to już awarii aplikacji. (6b8ddd, b/190622202)
Poprawki błędów
- Z Fragment
1.3.5: naprawiono regresję w przejściach elementów udostępnionych wprowadzoną w Fragment1.3.4przez aosp/1679887. Fragmenty prawidłowo obsługują teraz grupy przejść (ustawione bezpośrednio za pomocą elementutransitionGroup="true"lub pośrednio za pomocą elementutransitionNamelubbackground), a elementy udostępnione nie będą już zgłaszać błędówIndexOutOfBoundsException. (I16484, b/188679569, b/188969304) - Aplikacja
FragmentManagernie będzie się już zamykać podczas próby ukrycia usuwanego fragmentu. (I573dd, b/183634730) - Sprawdzanie kodu
OnCreateDialogIncorrectCallbacknie będzie już powodować awarii podczas oceny zmiennej najwyższego poziomu. (0a9efa, b/189967522)
Wersja 1.4.0-alpha02
2 czerwca 2021 r.
androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 i androidx.fragment:fragment-testing:1.4.0-alpha02 są udostępnione. Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
FragmentStrictModebędzie teraz zawsze rejestrować naruszenia, gdy rejestrowanie jest włączone za pomocąFragmentManager, niezależnie od używanej obecnie zasady trybu ścisłego. (I02df6, b/187872638)FragmentStrictModeobsługuje teraz wyłączenie określonych klasFragmentz trybu ścisłegoViolation, co pozwala im uniknąć kar. (Ib4e5d, b/184786736)Klasa
FragmentStrictModeViolationzostała rozszerzona o informacje o strukturze na podstawie każdego naruszenia. Dzięki temu możesz sprawdzić, co dokładnie spowodowało naruszenie, oraz fragment, który je spowodował (If5118, b/187871150). KażdyViolationzawiera te informacje:WrongFragmentContainerViolationzawiera terazViewGroup, do któregoFragmentpróbował dodać. (I83c75, b/187871150)TargetFragmentUsageViolationzostał rozszerzony naSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationiGetTargetFragmentRequestCodeUsageViolation, przy czymSetTargetFragmentUsageViolationzawiera fragment docelowy i kod żądania. (I741b4, b/187871150)SetUserVisibleHintViolationzawiera teraz wartość logiczną przekazaną dosetUserVisibleHint(). (I00585, b/187871150)FragmentTagUsageViolationzawiera teraz element ViewGroup, w którym tag<fragment>próbował umieścić fragment.(I5dbbc, b/187871150)FragmentReuseViolationzawiera teraz unikalny identyfikator poprzedniej instancjiFragment, która spowodowała naruszenie. (I0544d, b/187871150)RetainInstanceUsageViolationjest teraz klasą abstrakcyjną i ma 2 podklasy:SetRetainInstanceUsageViolationiGetRetainInstanceUsageViolation, które reprezentują 2 przypadki typu naruszenia. (Ic81e5, b/187871150)
Zmiany w zachowaniu
FragmentContainerViewzgłasza teraz wyjątek podczas próby zmiany atrybutufitsSystemWindowprogramowo lub za pomocą kodu XML. Wcięcia powinny być obsługiwane przez widok każdego fragmentu. (Ie6651, b/187304502)
Wersja 1.4.0-alpha01
18 maja 2021 r.
androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 i androidx.fragment:fragment-testing:1.4.0-alpha01 są udostępnione. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
FragmentContainerViewudostępnia teraz metodęgetFragment(), która zwraca fragment ostatnio dodany do kontenera. Działa to na tej samej zasadzie cofindFragmentById()z identyfikatoremFragmentContainerView, ale umożliwia łączenie wywołań. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerDodano
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}określa, czy w przejściu między fragmentami ma być włączona standardowa animacja przejścia aktywności zaczerpnięta z motywu. (I46652)
Wiele stosów wstecznych
FragmentManager utrzymuje stos wsteczny składający się z transakcji fragmentów, które używały addToBackStack(). Dzięki temu możesz wycofać te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu za pomocą fragmentów, aby umożliwić fragmentom odpowiednie przywrócenie stanu.
W tej wersji rozszerzamy te mechanizmy, udostępniając 2 nowe interfejsy API FragmentManager: saveBackStack(String name) i restoreBackStack(String name). Te interfejsy API używają tego samego name co addToBackStack(), aby zapisać stan FragmentTransaction i stan każdego fragmentu dodanego w tych transakcjach. Umożliwiają one późniejsze przywrócenie tych transakcji i ich fragmentów w niezmienionym stanie. Pozwala to skutecznie „przełączać się” między wieloma stosami wstecznymi przez zapisanie bieżącego stosu wstecznego i przywrócenie zapisanego stosu wstecznego.
saveBackStack() działa podobnie do popBackStack(), ponieważ jest asynchroniczna i powoduje odwrócenie („wycofanie”) wszystkich transakcji fragmentów do tej konkretnej nazwy oraz zniszczenie i usunięcie wszystkich dodanych fragmentów, ale różni się od niej w kilku ważnych aspektach:
saveBackStack()zawsze uwzględnia wszystkie osoby.- W przeciwieństwie do metody
popBackStack(), która w przypadku braku określonej nazwy na stosie wstecznym lub podania nazwy o wartości null wycofuje wszystkie transakcje na stosie wstecznym, metodasaveBackStack()nie wykonuje żadnych działań, jeśli wcześniej nie została zatwierdzona transakcja fragmentu za pomocą metodyaddToBackStack()z dokładnie taką samą nazwą o wartości innej niż null. - Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że stan widoku każdego fragmentu jest zapisywany, wywoływana jest funkcja
onSaveInstanceState()każdego fragmentu, a stan jest przywracany. Wszystkie instancjeViewModelpowiązane z tymi fragmentami są zachowywane (i nie jest na nich wywoływana funkcjaonCleared()).
Transakcje fragmentów, których można używać z saveBackStack(), muszą spełniać określone kryteria:
- Każda transakcja fragmentu musi używać
setReorderingAllowed(true), aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację. - Zapisany zestaw transakcji musi być samodzielny (tzn. nie może zawierać wyraźnych odwołań do fragmentów spoza tego zestawu), aby można go było przywrócić w dowolnym późniejszym czasie, niezależnie od zmian wprowadzonych w międzyczasie na stosie wstecznym.
- Żaden zapisany fragment nie może być zachowanym fragmentem ani mieć w swoim przechodnim zbiorze fragmentów podrzędnych zachowanego fragmentu. Dzięki temu
FragmentManagernie będzie zwracać żadnych odwołań do zapisanych fragmentów po zapisaniu listy wstecznej.
Podobnie jak w przypadku saveBackStack(), funkcja restoreBackStack() nie wykonuje żadnych działań, jeśli wcześniej nie została wywołana funkcja saveBackStack() o tej samej nazwie. (b/80029773)
Fragment StrictMode
Interfejsy FragmentStrictMode API zapewniają sprawdzanie w czasie działania, które umożliwia weryfikację, czy aplikacja lub biblioteki, od których zależy, nie wywołują wycofanych interfejsów API fragmentów. Gdy zostanie wykryte naruszenie, możesz wyświetlić komunikat logu, wywołać własny niestandardowy detektor lub spowodować awarię aplikacji. Wartość FragmentStrictMode.Policy, która określa, jakie kontrole są włączone i jakie „kary” są wywoływane, można ustawić w FragmentManager za pomocą nowej metody setStrictModePolicy(). Ta zasada dotyczy tego FragmentManager i przechodzi na wszystkich podrzędnych menedżerów fragmentów, którzy nie mają własnej, unikalnej zasady. (#123, #131, #150, b/143774122)
detectFragmentReuse()wykrywa, czy wcześniej usunięta instancjaFragmentjest ponownie dodawana doFragmentManager. Nigdy nie wchodź w interakcje z instancjąFragmentani nie przechowuj do niej odwołania po jej zniszczeniu i usunięciu zFragmentManager. (#142, b/153738653)detectFragmentTagUsage()wykrywa, kiedy używasz tagu<fragment>w pliku XML układu. Podczas powiększania fragmentów w ramach układu zawsze używajFragmentContainerView. (#141, b/153738235)detectWrongFragmentContainer()wykrywa, kiedy dodajesz fragment do kontenera, który nie jestFragmentContainerView. Zawsze używaj elementuFragmentContainerViewjako kontenera fragmentów w układzie. (#146, b/181137036)detectRetainInstanceUsage()wykrywa, kiedy używasz wycofanych interfejsów APIsetRetainInstance()lubgetRetainInstance(). (#140, b/153737954)detectSetUserVisibleHint()wykrywa, kiedy używasz wycofanego interfejsusetUserVisibleHint()API. (#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, a jedyną dostępną opcją jest teraz nowy menedżer stanu. (I90036, b/162776418) FragmentScenarioimplementuje terazCloseable, dzięki czemu możesz używać go z metodąusew języku Kotlin lub try-with-resources. (#121, b/143774122)
Nowe testy Lint
- Sprawdzanie za pomocą narzędzia
UseGetLayoutInflaterLint ostrzega teraz, gdy wDialogFragmentużywana jest funkcjaLayoutInflater.from(Context). Zawsze używaj metodygetLayoutInflater()fragmentu okna, aby uzyskać odpowiednią wartość dlaLayoutInflater. (#156, b/170781346) - Sprawdzanie kodu
DialogFragmentCallbacksDetectorostrzega teraz, gdy w metodzieonCreateDialog()klasyDialogFragmentwywoływane są funkcjesetOnCancelListenerlubsetOnDismissListener. Te odbiorniki należą do klasyDialogFragment, więc aby otrzymywać te wywołania zwrotne, należy zastąpić funkcjeonCancel()ionDismiss(). (#171, b/181780047, b/187524311)
Poprawki błędów
- Od Fragment 1.3.4: naprawiono regresję wprowadzoną w Fragment
1.3.3podczas używania interfejsuViewTreeViewModelStoreOwner.get()API zViewModelProviderlub metody Jetpack ComposeviewModel()w fragmencie. W tych przypadkach użycia prawidłowo stosowany jest elementViewModelProvider.Factorydostarczony przez fragment, jeśli zastępuje on elementgetDefaultViewModelProviderFactory()(tak jak w przypadku fragmentów z adnotacjami@AndroidEntryPointpodczas korzystania z Hilt). Jeśli nie zastąpisz tej metody, domyślnie utworzona zostanieSavedStateViewModelFactory, która zapisuje i przywraca stan wraz z widokiem fragmentu. (I5cbfa, b/186097368) - W Fragment 1.3.4: gdy używasz
FragmentContainerViewna API 29, wstawki nie będą już wysyłane w nieskończoność, co rozwiązuje problemy z instancjamiBottomNavigationBariFloatingActionButton. (I1bb78, b/186012452) - Z Fragmentu 1.3.4: po śmierci procesu możesz teraz pobrać obiekt Parcelable z pakietu wyników fragmentu. (I65932, b/187443158)
- Z Fragmentu 1.3.4: podczas wykonywania przejścia elementu udostępnionego w przypadku elementu ViewGroup, jeśli wartość
transitionGroupjest ustawiona na false, przejście będzie teraz prawidłowe. (I99675)
Wkład zewnętrzny
- Dziękujemy simonschiller za wprowadzenie
FragmentScenariowCloseable. (#121, b/143774122) - Dziękujemy simonschiller za dodanie całego interfejsu
FragmentStrictModeAPI w tej wersji. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Dziękujemy tatocaster za dodanie
UseGetLayoutInflaterLint check. (#156, b/170781346) - Dziękujemy tatocaster za dodanie
DialogFragmentCallbacksDetectorLint check. (#171, b/181780047)
Wersja 1.3
Wersja 1.3.6
21 lipca 2021 r.
androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 i androidx.fragment:fragment-testing:1.3.6 są udostępnione. Wersja 1.3.6 zawiera te zatwierdzenia.
Poprawki błędów
- Z Fragment
1.4.0-alpha03:FragmentManagernie będzie się już zamykać, gdy spróbujesz ukryć usuwany fragment. (I573dd, b/183634730) - Widok fragmentu jest teraz prawidłowo ustawiony na
GONEpodczas korzystania zhide(), gdy widok główny ma ustawioną wartośćtransitionGroup=”true”. (aosp/1766655, b/193603427) FragmentActivityzawsze odblokowuje zapisany stan jako pierwszą operację w wywołaniach zwrotnych cyklu życia, które zastępuje. (I6db7a)
Aktualizacja zależności
- Od Fragment
1.3.6: fragmenty zależą teraz od Działania1.2.4(I3a66c)
Wersja 1.3.5
16 czerwca 2021 r.
androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 i androidx.fragment:fragment-testing:1.3.5 są udostępnione. Wersja 1.3.5 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z regresją w przejściach elementów współdzielonych, który został wprowadzony w fragmencie
1.3.4przez aosp/1679887. Fragmenty prawidłowo obsługują teraz grupy przejść (ustawione bezpośrednio za pomocątransitionGroup="true"lub pośrednio za pomocątransitionNamelubbackground), a elementy udostępnione nie będą już zgłaszać błędówIndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
Wersja 1.3.4
18 maja 2021 r.
androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 i androidx.fragment:fragment-testing:1.3.4 są udostępnione. Wersja 1.3.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono regresję wprowadzoną w fragmencie
1.3.3podczas korzystania z interfejsu APIViewTreeViewModelStoreOwner.get()zViewModelProviderlub metody Jetpack ComposeviewModel()w fragmencie podczas korzystania z Hilt. W tych przypadkach użycia prawidłowo stosowany jest znakViewModelProvider.Factorydostarczony przez fragment, jeśli zastępuje on znakgetDefaultViewModelProviderFactory()(tak jak w przypadku fragmentów z adnotacjami@AndroidEntryPoint). Jeśli nie zastąpisz tej metody, domyślnie utworzona zostanieSavedStateViewModelFactory, która zapisuje i przywraca stan wraz z widokiem fragmentu. (I5cbfa, b/186097368) - Gdy używasz
FragmentContainerViewna interfejsie API 29, wstawki nie będą już wysyłane w nieskończoność, co rozwiązuje problemy z instancjamiBottomNavigationBariFloatingActionButton. (I1bb78, b/186012452) - Po śmierci procesu możesz pobrać obiekt Parcelable z pakietu wyników fragmentu. (I65932, b/187443158)
- Podczas przejścia elementu udostępnionego w przypadku elementu ViewGroup, jeśli wartość
transitionGroupjest ustawiona na false, przejście będzie teraz prawidłowe. (I99675)
Wersja 1.3.3
21 kwietnia 2021 r.
androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 i androidx.fragment:fragment-testing:1.3.3 są udostępnione. Wersja 1.3.3 zawiera te zatwierdzenia.
Nowe funkcje
- Używanie
SavedStateViewModelFactorydziała teraz, gdy jest używane zSavedStateRegistryOwnerzwróconym przez użycieViewTreeSavedStateRegistryOwner.get()z widokiem fragmentu. (I21acf, b/181577191)
Poprawki błędów
- Naprawiono regresję wprowadzoną w fragmencie
1.3.2, która powodowała, że animacjepopEnternie były uruchamiane podczas wycofywaniaFragmentTransactionzawierającego operacjęsetPrimaryNavFragment, np. operacje używane przezNavHostFragment. (I38c87, b/183877426) FragmentContainerViewzapewnia teraz, że każdyFragmentotrzymuje nowy zestawWindowInsets, dzięki czemu każdy fragment może teraz niezależnie korzystać z elementów wstawianych. (I63f68, b/172153900)DialogFragmentprawidłowo obsługuje teraz przypadki, w których fragment podrzędny jest dodawany do kontenera o tym samym identyfikatorze co kontener w niestandardowej klasieDialog, co rozwiązuje 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 wcięcie pierwszego fragmentu na liście aktywnych fragmentów. (If5c33, b/183705451)
Poprawki błędów w nowym menedżerze stanu
- Nowy menedżer stanu fragmentu prawidłowo obsługuje przejścia wyjścia z operacjami ukrywania. (I9e4de, b/184830265)
Wersja 1.3.2
24 marca 2021 r.
androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 i androidx.fragment:fragment-testing:1.3.2 są udostępnione. Wersja 1.3.2 zawiera te zatwierdzenia.
Poprawki błędów w nowym menedżerze stanu
- Jeśli operacje
popBackStack()icommit()są wykonywane jednocześnie, ostatnia operacja ustawi kierunek wszystkich animacji, zamiast uruchamiać niektóre animacje wyskakujące i niektóre animacje wejścia. (I7072e, b/181142246) - Widoki w hierarchii udostępnionych elementów nie będą już miały wyczyszczonej nazwy przejścia podczas przejścia udostępnionego elementu. (I4d4a6, b/179934757)
Aktualizacje zależności
- Fragment zależy teraz od Activity w wersji 1.2.2, co rozwiązuje problem z kontrolą lint
InvalidFragmentVersionForActivityResultw Activity podczas korzystania z Fragment w wersji 1.3.1 lub nowszej. - Fragment zależy teraz od Lifecycle 2.3.1.
Wersja 1.3.1
10 marca 2021 r.
androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 i androidx.fragment:fragment-testing:1.3.1 są udostępnione. Wersja 1.3.1 zawiera te zatwierdzenia.
Nowe funkcje
- Okna w
DialogFragmentmogą teraz uzyskiwać dostęp do właścicieli ViewTree za pomocą DecorView, co zapewnia możliwość używaniaDialogFragmentzComposeView. (Ib9290, b/180691023)
Poprawki błędów
- Fragmenty umieszczone w aktywności
RESUMEDza pomocą elementu FragmentContainerView są teraz prawidłowo wyświetlane po zmianie konfiguracji. (Ie14c8, b/180538371) - Na końcu fragmentu nie ma już dodatkowego znaku
}toString()(I54705, b/177761088). - Przesłonięte metody w klasie FragmentActivity prawidłowo dziedziczą teraz dokumentację JavaDoc metody bazowej (I736ce, b/139548782).
- Dokumentacja parametrów
setFragmentResultisetFragmentResultListenerzostała zaktualizowana, aby odzwierciedlać fakt, że nie akceptują już wartości dopuszczających wartość null (I990ba, b/178348386).
Poprawki błędów w nowym menedżerze stanu
- Naprawiono wyciek pamięci we fragmentach spowodowany przez
mFocusedView(Ib4e9e, b/179925887) - Fragmenty prawidłowo wywołują
onCreateOptionsMenupodczas korzystania z transakcji wyświetlania/ukrywania (I8bce8, b/180255554). - Fragmenty podrzędne z przejściami, które rozpoczynają się przed rozmieszczeniem fragmentu, będą teraz prawidłowo osiągać
RESUMED(Ic11e6, b/180825150) - Fragmenty rozszerzane za pomocą tagu
<fragment>będą teraz zawsze docierać doRESUMED(I452ac, (I9fa49)
Aktualizacje zależności
- Fragment w wersji 1.3.1 zależy od aktywności
1.2.1. (I557b9)
Wersja 1.3.0
10 lutego 2021 r.
androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 i androidx.fragment:fragment-testing:1.3.0 są udostępnione. Wersja 1.3.0 zawiera te zatwierdzenia.
Najważniejsze zmiany od wersji 1.2.0
- Nowy menedżer stanu: znaczne przepisanie wewnętrznych elementów biblioteki
FragmentManagerrozwiązało wiele problemów związanych z wysyłaniem zdarzeń cyklu życia, animacji i przejść oraz sposobem obsługi odroczonych fragmentów. Integracja interfejsu Activity Result API: dodaliśmy obsługę interfejsu
ActivityResultRegistryAPI wprowadzonego w Activity1.2.0do obsługi przepływówstartActivityForResult()+onActivityResult()irequestPermissions()+onRequestPermissionsResult()bez zastępowania metod w fragmencie, a także udostępniliśmy punkty zaczepienia do testowania tych przepływów. Zapoznaj się z aktualizacją artykułu Uzyskiwanie wyniku z aktywności.- Ta wersja rozwiązuje szereg 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
FragmentActivity. Aby używać interfejsów API wyników działania wFragmentActivitylubAppCompatActivity, musisz uaktualnić fragment do wersji 1.3.0.
- Ta wersja rozwiązuje szereg 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
Fragment Result API: dodano obsługę przekazywania wyników między dwoma fragmentami za pomocą nowych interfejsów API w
FragmentManager. Działa to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), fragmentów DialogFragment i fragmentów w Navigation. Zapewnia to, że wyniki są wysyłane do fragmentu tylko wtedy, gdy jest on w stanie co najmniejSTARTED. Interfejsy API fragmentu docelowego zostały wycofane na rzecz tych nowych interfejsów API. Więcej informacji znajdziesz w artykule Uzyskiwanie wyników za pomocą interfejsu Fragment Result API.FragmentOnAttachListener: wywołanie zwrotneonAttachFragment()w przypadkuFragmentActivityiFragmentzostało wycofane. Dodano nowy interfejsFragmentOnAttachListener, który zapewnia bardziej elastyczną alternatywę, umożliwiając przekazywanieonAttachFragment()do oddzielnych, testowalnych odbiorników i dodawanie odbiornika do menedżerów fragmentów innych niż bezpośredni podrzędny menedżer fragmentów.FragmentScenarioUlepszenia: klasaFragmentScenarioz artefaktufragment-testingzostała przepisana w języku Kotlin i zawiera szereg ulepszeń:FragmentScenarioużywa terazsetMaxLifecycle()do implementacjimoveToState(), co zapewnia spójne działanie na wszystkich poziomach interfejsu API i odłącza stan fragmentu od bazowej aktywności.FragmentScenarioobsługuje teraz ustawianie początkowegoLifecycle.State, aby można było potwierdzić stan fragmentu przed pierwszym przejściem do każdegoLifecycle.State.- Obecnie istnieje alternatywa dla interfejsu
FragmentScenarioAPIonFragmentw postaci metody rozszerzenia KotlinwithFragment, która umożliwia zwracanie wartości. W szczególności ponownie zgłasza wyjątki zgłoszone w danym bloku.
ViewTreeSupport:Fragmentobsługuje teraz interfejsy APIViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)iViewTreeSavedStateRegistryOwnerdodane w Lifecycle2.3.0i SavedState1.1.0, dzięki czemu zwraca fragment jakoViewModelStoreOwnerorazSavedStateRegistryOwneriLifecycleOwnerpowiązane z cyklem życia widoku fragmentu podczas używaniaViewwFragment.TRANSIT_Zmiany w animacji: domyślne efekty fragmentówTRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEiTRANSIT_FRAGMENT_FADEużywają terazAnimatorzamiastAnimation. Zasoby użyte do tworzenia tych animatorów są teraz prywatne.Wycofanie
setRetainInstance(): metodasetRetainInstance()w przypadku fragmentów została wycofana. Wraz z wprowadzeniem ViewModeli deweloperzy zyskali specjalny interfejs API do przechowywania stanu, który można powiązać z aktywnościami, fragmentami i wykresami nawigacji. Pozwala to deweloperom używać zwykłego, nieprzechowywanego fragmentu i zachowywać oddzielnie określony stan, który chcą zachować. Dzięki temu unikają częstego źródła wycieków pamięci, zachowując jednocześnie przydatne właściwości pojedynczego tworzenia i niszczenia stanu przechowywanego (czyli konstruktoraViewModeli otrzymywanego przez niego wywołania zwrotnegoonCleared()).Wycofanie adaptera ViewPager 1: wraz z wprowadzeniem ViewPager2
1.0.0wycofaliśmy klasyFragmentPagerAdapteriFragmentStatePagerAdapterdo interakcji zViewPager. Zobacz Migracja z ViewPager do ViewPager2.
Wersja 1.3.0-rc02
27 stycznia 2021 r.
androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 i androidx.fragment:fragment-testing:1.3.0-rc02 są udostępnione. 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
DialogFragmentpojawiał się nad elementem podrzędnymDialogFragment. Fragmenty okna podrzędnego są teraz zawsze wyświetlane nad fragmentem okna nadrzędnego. (I30806, b/177439520) - Rozwiązaliśmy problem polegający na tym, że wykonanie operacji
hidez użyciemAnimationpowodowało, że ukryty fragment migał na końcu animacji. (I57e22, b/175417675) - Fragmenty z dodanymi przejściami przed dołączeniem hierarchii widoków prawidłowo docierają teraz do
RESUMED. (I1fc1d, b/177154873)
Poprawki błędów w nowym menedżerze stanu
- Widok fragmentu
Lifecycleprawidłowo obsługuje teraz przypadki, w których widok fragmentu jest niszczony przed osiągnięciem przezLifecyclestanuCREATED, co pozwala uniknąć wyjątków typu „no event down from INITIALIZED” (brak zdarzenia z poziomu INITIALIZED). (eda2bd, b/176138645) - Fragmenty, które używają znaku
Animator, są teraz wyświetlane w odpowiedniej kolejności podczas korzystania zFragmentContainerView. (Id9aa3, b/176089197)
Wersja 1.3.0-rc01
16 grudnia 2020 roku
androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 i androidx.fragment:fragment-testing:1.3.0-rc01 są udostępnione. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
onPrepareOptionsMenu()działa teraz zgodnie z tą samą logiką coonCreateOptionsMenu()i nie jest już wywoływana, gdy fragment nadrzędny wywołujesetMenuVisibility(false). (Id7de8, b/173203654)
Poprawki błędów w nowym menedżerze stanu
- Rozwiązaliśmy problem z wyciekiem pamięci i artefaktami wizualnymi podczas dodawania fragmentu z
AnimationdoFragmentContainerView, a następnie przerywania tego dodawania operacją pop. (I952d8) - Rozwiązaliśmy problem, który powodował, że widok fragmentu pozostawał w hierarchii widoków, jeśli został zastąpiony podczas wykonywania metod
onCreate()lubonViewCreated(). (I8a7d5) - Fokus jest teraz prawidłowo przywracany do widoków głównych fragmentów po ich wznowieniu. (Ifc84b)
- Łączenie operacji pop i replace w tej samej transakcji fragmentu będzie teraz wyświetlać odpowiednie animacje (Ifd4e4, b/170328691).
Wersja 1.3.0-beta02
2 grudnia 2020 r.
androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 i androidx.fragment:fragment-testing:1.3.0-beta02 są udostępnione. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
FragmentScenariozostał w pełni przekonwertowany na język Kotlin przy zachowaniu zgodności kodu źródłowego i binarnej dzięki użyciu interfejsów funkcyjnych Kotlin 1.4 dlaFragmentAction. (I19d31)
Zmiany w zachowaniu
- Elementy FragmentContainerView, które nie wczytują fragmentu za pomocą atrybutu
classlubandroid:name, mogą być teraz używane poza elementemFragmentActivity. (Id4397, b/172266337) - Próba ustawienia maksymalnego cyklu życia fragmentu na
DESTROYEDspowoduje teraz zgłoszenie wyjątkuIllegalArgumentException(Ie7651, b/170765622). - Inicjowanie elementu FragmentScenario ze stanem
DESTROYEDbędzie teraz powodować zgłaszanie wyjątkuIllegalArgumentException(I73590, b/170765622).
Poprawki błędów w nowym menedżerze stanu
- Rozwiązaliśmy problem, który powodował, że widok nie osiągał stanu końcowego, jeśli przerywano przejście fragmentu, które korzystało z opcji
Animatorlub jednej z opcjiTRANSIT_FRAGMENT_. (I92426, b/169874632) - Rozwiązaliśmy problem, który uniemożliwiał prawidłowe niszczenie fragmentów z wychodzącym
Animation. (I83d65) - Wychodzące fragmenty, w których efekty zostały odwrócone, są teraz prawidłowo anulowane i uruchamiane ponownie z odpowiednim efektem wejścia. (I62226, b/167092035)
- Rozwiązaliśmy problem, który powodował, że wyjście
Animatorzhide()nie było uruchamiane. (Id7ffe) - Fragmenty są teraz prawidłowo wyświetlane, gdy są odroczone, a następnie natychmiast uruchamiane. (Ie713b, b/170022857)
- Fragmenty, które usuwają fokus podczas animacji, nie będą już próbować przywrócić fokusu na odłączonym widoku po osiągnięciu stanu
RESUMED(I38c65, b/172925703).
Wkład zewnętrzny
FragmentFactorybuforuje teraz klasy fragmentów oddzielnie dla różnych instancjiClassLoader. Dziękujemy, Simon Schiller! (#87, b/113886460)
Wersja 1.3.0-beta01
1 października 2020 roku
androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 i androidx.fragment:fragment-testing:1.3.0-beta01 są udostępnione. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
setMaxLifecycle()obsługuje teraz ustawianie stanuLifecyclenaINITIALIZING, o ile fragment nie został przeniesiony doCREATED. (b/159662173)
Zmiany w interfejsie API
- Uaktualnienie androidx do Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Zmiany w zachowaniu
- Pliki zasobów fragmentu zostały prawidłowo ustawione jako prywatne. (aosp/1425237)
Poprawki błędów
- Fragmenty rozszerzone za pomocą tagu
<fragment>będą teraz prawidłowo czekać, aż ich widoki zostaną dodane do kontenera, zanim przejdą do stanu STARTED (I02f4c). - Fragmenty, które są widoczne, a następnie przechodzą z
setMaxLifecycle()doCREATED, teraz prawidłowo uruchamiają efekty wyjścia. (b/165822335) - Usunięcie odłączonego fragmentu, który nie został dodany do stosu wstecznego, nie powoduje już wycieku pamięci. Dzięki uprzejmości Nicklasa Ansmana Giertza (b/166489383)
- Aktywne fragmenty będą teraz zawsze miały wartość
FragmentManagerinną niż null, a fragmenty z wartościąFragmentManagerinną niż null będą zawsze uznawane za aktywne. (aosp/1422346) - Domyślne efekty fragmentu,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEiTRANSIT_FRAGMENT_FADE, używają terazAnimatorzamiastAnimation. (b/166155034)
Poprawki błędów w nowym menedżerze stanu
- Fragmenty teraz prawidłowo przywracają stan fokusu widoku sprzed rozpoczęcia animacji. (Icc256)
- Fragmenty, które mają tylko przejście elementu wspólnego, teraz prawidłowo kończą efekty specjalne, co oznacza, że faktycznie 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 widok fragmentu wychodzącego przed dodaniem widoku fragmentu wchodzącego. (I41a6e)
- Nowy menedżer stanu uwzględnia teraz wyraźne zmiany widoczności widoku fragmentu. Oznacza to, że jeśli ustawisz widok fragmentu wchodzącego na
INVISIBLEprzed rozpoczęciem animacji, pozostanie on niewidoczny. (b/164481490) - Fragmenty mają teraz wyższy priorytet
AnimatorsniżAnimations, co oznacza, że fragment zawierający oba te elementy uruchomi tylkoAnimatori zignorujeAnimation. (b/167579557) - Nowy menedżer stanu nie powoduje już migania fragmentów podczas używania animacji wejścia. (b/163084315)
Znany problem
Jeśli podczas korzystania z nowego menedżera stanu naciśniesz przycisk Wstecz w trakcie efektu specjalnego wejścia, zamiast wrócić do poprzedniego fragmentu, stary fragment nigdy nie zostanie ponownie dodany, co spowoduje wyświetlenie pustego ekranu. (b/167259187, b/167092035, b/168442830)
Wersja 1.3.0-alpha08
19 sierpnia 2020 r.
androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 i androidx.fragment:fragment-testing:1.3.0-alpha08 są udostępnione. Wersja 1.3.0-alpha08 zawiera te zmiany.
Nowy menedżer stanu
Ta wersja zawiera znaczną refaktoryzację wewnętrznego zarządzania stanem FragmentManager, która wpływa na wysyłanie metod cyklu życia, animacji i przejść oraz na sposób obsługi odroczonych transakcji. Ta opcja jest domyślnie włączona. Więcej informacji znajdziesz w tym poście na blogu. (b/139536619, b/147749580)
- Eksperymentalny interfejs API w
FragmentManager.enableNewStateManager(boolean)może służyć do określania, czy FragmentManager używa nowego menedżera stanu. (I7b6ee)
Te problemy są rozwiązywane tylko w przypadku korzystania z nowego menedżera stanu:
- Poprzedni fragment operacji
replacejest teraz prawidłowo zatrzymywany przed rozpoczęciem nowego fragmentu. (b/161654580) - Fragmenty zapobiegają teraz uruchamianiu wielu konkurujących ze sobą animacji w tych samych fragmentach, co pozwala uniknąć sytuacji, w których
Animationzastępuje wszystkie efektyTransitionlub w którychAnimatoriTransitionw pojedynczym fragmencie są uruchamiane jednocześnie. (b/149569323) - Obecnie sprawdzane są
enterTransitioniexitTranstionwszystkich fragmentów wchodzących i wychodzących, a nie tylko ostatniego fragmentu wchodzącego i pierwszego fragmentu wychodzącego. (b/149344150) - Odłożone fragmenty nie utkną już w stanie
CREATED, ale zostaną przeniesione do stanuSTARTEDwraz z innymi fragmentami. (b/129035555) - Rozwiązaliśmy problem, który powodował, że
FragmentManagerwykonywał operacje w nieprawidłowej kolejności w przypadku połączenia odroczonej transakcji z zmienioną kolejnością i transakcji bez zmienionej kolejności. (b/147297731) - Jednoczesne wyświetlanie wielu fragmentów nie będzie już powodować tymczasowego wyświetlania fragmentów pośrednich podczas odraczania fragmentów. (b/37140383)
FragmentManagerzwraca teraz prawidłowe fragmenty podczas wywoływania funkcjifindFragmentById()lubfindFragmentByTag()z poziomu wywołania zwrotnegoonAttachFragment(). (b/153082833)- Fragmenty nie wywołują już metody
onCreateView()w przypadku fragmentów, które są niszczone, gdy fragment zastępujący jest odroczony. (b/143915710) - Komunikat o błędzie, który pojawia się podczas próby połączenia instancji platformy
Transitioni Androida XTransition, zawiera teraz informację o fragmencie z nieprawidłowym przejściem. (b/155574969)
Zmiany w zachowaniu
- Możesz teraz wywołać
launch()w metodzie cyklu życiaonCreate()fragmentuActivityResultLauncher. (b/161464278) - Wywołanie funkcji
registerForActivityResult()po wywołaniu funkcjionCreate()powoduje teraz zgłoszenie wyjątku wskazującego, że jest to niedozwolone, zamiast cichego niepowodzenia w dostarczaniu wyników po zmianie konfiguracji. (b/162255449) FragmentActivitykorzysta teraz z interfejsuOnContextAvailableListenerAPI wprowadzonego w Activity1.2.0-alpha08, aby przywrócić stanFragmentManager. Wszyscy detektorzy dodani do podklasFragmentActivitybędą uruchamiani po tym detektorze. (I513da)
Poprawki błędów
ActivityOptionsprzekazywane podczas korzystania zstartIntentSenderForResult()są teraz uwzględniane. (b/162247961)
Znany problem
- Jeśli używasz nowego menedżera stanu, bezpośrednie ustawienie widoczności widoku głównego fragmentu po
onViewCreated()i przedonResume()spowoduje, że ustawiona 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-alpha07
22 lipca 2020 r.
androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 i androidx.fragment:fragment-testing:1.3.0-alpha07 są udostępnione. Wersja 1.3.0-alpha07 zawiera te zatwierdzenia.
Nowe funkcje
FragmentScenarioobsługuje teraz ustawianie początkowego stanu cyklu życiaCREATED,STARTEDlubRESUMEDzamiast zawsze przenosić fragment do stanuRESUMED. (b/159662750)- Dodaliśmy alternatywę dla interfejsu
FragmentScenarioAPIonFragmentw postaci metody rozszerzającej KotlinwithFragment, która umożliwia zwracanie wartości. W szczególności ponownie zgłasza wyjątki zgłoszone w danym bloku. (b/158697631)
Zmiany w zachowaniu
FragmentScenarioużywa terazsetMaxLifecycle()do implementacjimoveToState(), co zapewnia spójne działanie na wszystkich poziomach interfejsu API i odłącza stan fragmentu od bazowej aktywności. (b/156527405)- Obiekt
SavedStateRegistryOwnerzwrócony przezViewTreeSavedStateRegistryOwnerjest teraz powiązany z cyklem życia widoku fragmentu. Dzięki temu 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
ViewCompat.requestApplyInsets(), co pozwala uniknąć sytuacji, w których żądanie wstawienia było odrzucane. (b/158095749) - Wywołanie
clearFragmentResultListenerteraz prawidłowo czyści obserwatora cyklu życia. (b/159274993)
Wersja 1.3.0-alpha06
10 czerwca 2020 r.
androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 i androidx.fragment:fragment-testing:1.3.0-alpha06 są udostępnione. Wersja 1.3.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Wywołanie zwrotne
onAttachFragment()w przypadkuFragmentActivityiFragmentzostało wycofane. Dodaliśmy nowy interfejsFragmentOnAttachListener, który zapewnia bardziej elastyczną alternatywę, umożliwiając delegowanieonAttachFragment()do oddzielnych, testowalnych odbiorników i obsługę dodawania odbiornika do menedżerów fragmentów innych niż bezpośredni podrzędny menedżer fragmentów. (I06d3d)
Poprawki błędów
- Stan widoku fragmentów nadrzędnych jest teraz przywracany przed stanem widoku fragmentów podrzędnych, co rozwiązuje problem z kolejnością wyświetlania po zmianie konfiguracji, gdy
DialogFragmentwyświetlał innyDialogFragmentjako fragment podrzędny. (b/157195715) - Rozwiązaliśmy problem, który powodował, że
UseRequireInsteadOfGetLint check nie obsługiwał prawidłowo połączonych zastosowań operatorów?.i!!. (b/157677616)
Wersja 1.3.0-alpha05
20 maja 2020 r.
androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 i androidx.fragment:fragment-testing:1.3.0-alpha05 są udostępnione. Wersja 1.3.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę właściwości
ViewTreeViewModelStoreOwnerz elementu Lifecycle2.3.0-alpha03i właściwościViewTreeSavedStateRegistryOwnerz elementu SavedState1.1.0-alpha01podczas używania elementuVieww elemencieFragment. (aosp/1297993, aosp/1300264)
Zmiany w interfejsie API
- Interfejsy API
setFragmentResult()isetFragmentResultListener()przyjmują teraz odpowiednio niepuste wartościBundleiFragmentResultListener. Aby jednoznacznie wyczyścić wcześniej ustawiony wynik lub odbiornik, użyj nowych metodclearFragmentResult()iclearFragmentResultListener(). (b/155416778) setFragmentResultListener()Rozszerzenia Kotlin, które przyjmują wyrażenie lambda, są teraz oznaczone jakoinline. (b/155323404)
Zmiany w zachowaniu
- Wycofane wcześniej interfejsy
startActivityForResult(),startIntentSenderForResult()irequestPermissionswFragmentwewnętrznie korzystają teraz zActivityResultRegistry, co usuwa ograniczenie dotyczące używania w kodach żądań tylko niższych bitów (poniżej0xFFFF) podczas korzystania z tych interfejsów API. (b/155518741)
Aktualizacje dokumentacji
- Rozszerzyliśmy dokumentację konstruktorów
Fragment(@LayoutRes int)iDialogFragment(@LayoutRes int), aby wyjaśnić, że w przypadku używania domyślnego konstruktoraFragmentFactorynależy wywoływać je z konstruktora bez argumentów w klasach podrzędnych. (b/153042497)
Wersja 1.3.0-alpha04
29 kwietnia 2020 r.
androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 i androidx.fragment:fragment-testing:1.3.0-alpha04 są udostępnione. Wersja 1.3.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę przekazywania wyników między dwoma fragmentami za pomocą nowych interfejsów API w
FragmentManager. Działa to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), fragmentów DialogFragment i fragmentów w Navigation. Zapewnia to, że wyniki są wysyłane do fragmentu tylko wtedy, gdy jest on w stanie co najmniejSTARTED. (b/149787344)
Zmiany w interfejsie API
- Interfejsy API fragmentu docelowego 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 klasie Fragment zostały wycofane. Użyj interfejsów Activity Result API. (aosp/1290887) - Zmiana powodująca niezgodność w usłudze Activity
1.2.0-alpha04: metodaprepareCall()została zmieniona naregisterForActivityResult(). (aosp/1278717)
Poprawki błędów
- Fragment
getViewLifecycleOwner()jest teraz zatrzymywany przed wywołaniemonSaveInstanceState(), co odzwierciedla zachowanie cyklu życia fragmentu. (b/154645875) - Wywołanie
setMenuVisibility(false)w fragmencie teraz prawidłowo zmienia widoczność menu udostępnianych przez jego fragmenty podrzędne. (b/153593580) - Rozwiązaliśmy problem z
illegalStateExceptionpodczas dodawania fragmentu do hierarchii widokówDialogFragmentza pomocąFragmentContainerView. (b/154366601) - Metoda
getDefaultViewModelProviderFactory()w przypadku fragmentów nie powoduje już awarii, gdy fragmenty są hostowane poza aktywnością. (b/153762914)
Wersja 1.3.0-alpha03
1 kwietnia 2020 r.
androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 i androidx.fragment:fragment-testing:1.3.0-alpha03 są udostępnione. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Metody
prepareCallw usłudzeFragmentto terazfinal. (b/152439361)
Poprawki błędów
- Rozwiązaliśmy problem regresji wprowadzony w fragmencie
1.3.0-alpha02podczas korzystania zBottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - Naprawiono awarię podczas korzystania z
prepareCallwe fragmencie po zmianie konfiguracji. (b/152137004) - Rozwiązaliśmy problem, który powodował ignorowanie przejść elementów współdzielonych i przejść wyjścia podczas korzystania z
setTargetFragment(). (b/152023196) - Fragment
1.2.4: zaktualizowano reguły ProGuard dla fragmentów, aby umożliwić zaciemnianie zachowanych fragmentów. (b/151605338) - Z Fragment
1.2.4: wyłączono regułęFragmentLiveDataObserveLint w przypadku klasDialogFragment, ponieważ ich cykl życia i cykl życia widoku są zawsze zsynchronizowane, co umożliwia bezpieczne używaniethislubviewLifecycleOwnerpodczas wywoływaniaobserve. (b/151765086)
Zmiany zależności
- Fragmenty zależą od aktywności
1.2.0-alpha03, w której wprowadzono znaczące ulepszenia interfejsu Activity Result API w aktywności1.2.0-alpha02.
Wersja 1.3.0-alpha02
18 marca 2020 r.
androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 i androidx.fragment:fragment-testing:1.3.0-alpha02 są udostępnione. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy obsługę interfejsu
ActivityResultRegistryAPI wprowadzonego w Activity1.2.0-alpha02, aby obsługiwać przepływystartActivityForResult()+onActivityResult()irequestPermissions()+onRequestPermissionsResult()bez zastępowania metod w fragmencie, a także udostępniać punkty zaczepienia do testowania tych przepływów. Zapoznaj się ze zaktualizowanym artykułem Uzyskiwanie wyniku z aktywności. (b/125158199)
Zmiany w interfejsie API
DialogFragmentudostępnia teraz konstruktor, który przyjmuje@LayoutReswskazujący układ, któryonCreateView()powinien domyślnie rozszerzać. (b/150327080)- Metoda
onActivityCreated()została wycofana. Kod dotyczący widoku fragmentu powinien być umieszczony w metodzieonViewCreated()(która jest wywoływana bezpośrednio przed metodąonActivityCreated()), a pozostały kod inicjujący – w metodzieonCreate(). Aby otrzymać wywołanie zwrotne, gdyonCreate()działania zostanie ukończone, należy zarejestrowaćLifeCycleObserverwLifecycledziałania wonAttach()i usunąć je po otrzymaniu wywołania zwrotnegoonCreate(). (b/144309266)
Poprawki błędów
- Fragment
1.2.3: naprawiliśmy błąd wDialogFragment, który powodowałStackOverflowErrorpodczas wywoływaniagetLayoutInflater()z poziomuonCreateDialog(). (b/117894767, aosp/1258664) - Fragment
1.2.3: zmniejszyliśmy zakres reguł ProGuard uwzględnionych w bibliotece Fragment, aby zapewnić możliwość usuwania nieużywanych klas Fragment. (b/149665169) - W fragmencie
1.2.3: naprawiono fałszywie dodatnie wyniki sprawdzaniaUseRequireInsteadOfGetLint w przypadku używania lokalnej nazwy zmiennej, która przesłaniała nazwę właściwości Kotlin. (b/149891163) - Z Fragment
1.2.3:FragmentContainerViewnie zgłasza już błęduUnsupportedOperationExceptionw przypadku użycia nieprawidłowego konstruktora w podglądzie układu. (b/149707833)
Znane problemy
BottomSheetDialogFragmentnie umieszcza już prawidłowo okna na ekranie. (b/151652127)
Wersja 1.3.0-alpha01
4 marca 2020 r.
androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 i androidx.fragment:fragment-testing:1.3.0-alpha01 są udostępnione. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę interfejsu
ViewTreeLifecycleOwner.get(View)API dodanego w Lifecycle2.3.0-alpha01, dzięki czemu będzie on zwracaćviewLifecycleOwnerfragmentu jakoLifecycleOwnerdla wszystkich widoków zwracanych przezonCreateView(). (aosp/1182955)
Zmiany w interfejsie API
- Metoda
setRetainInstance()w przypadku fragmentów została wycofana. Wraz z wprowadzeniem ViewModeli deweloperzy zyskali specjalny interfejs API do przechowywania stanu, który można powiązać z aktywnościami, fragmentami i wykresami nawigacji. Pozwala to deweloperom używać zwykłego, nieprzechowywanego fragmentu i zachowywać oddzielnie określony stan, który chcą zachować. Dzięki temu unikają częstego źródła wycieków pamięci, zachowując jednocześnie przydatne właściwości pojedynczego tworzenia i niszczenia stanu przechowywanego (czyli konstruktoraViewModeli otrzymywanego przez niego wywołania zwrotnegoonCleared()). (b/143911815) - Wraz z wprowadzeniem ViewPager2
1.0.0klasyFragmentPagerAdapteriFragmentStatePagerAdapterdo interakcji zViewPagerzostały wycofane. Zobacz Migracja z ViewPager do ViewPager2. (b/145132715)
Poprawki błędów
- Reguły ProGuard dla fragmentów zachowują teraz tylko konstruktory domyślne klas
Fragment, które są używane, a nie wszystkich instancjiFragment. Rozwiązuje to problem regresji wprowadzony w fragmencie1.2.1. (b/149665169 require___()Reguły Lint dodane w fragmencie1.2.2nie generują już fałszywych alarmów w przypadku zmiennych lokalnych, które mają taką samą nazwę jak zacienione nazwy właściwości Kotlin (np.view). (b/149891163)FragmentContainerViewnie zgłasza już błęduUnsupportedOperationExceptionpodczas korzystania z podglądu układu w Androidzie Studio. (b/149707833)- Rozwiązaliśmy problem, który powodował, że zachowane 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.
androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 i androidx.fragment:fragment-testing:1.2.5 są udostępnione. Wersja 1.2.5 zawiera te zatwierdzenia.
Poprawki błędów
- Fragment
getViewLifecycleOwner()jest teraz zatrzymywany przed wywołaniemonSaveInstanceState(), co odzwierciedla zachowanie cyklu życia fragmentu. Wcześniej opublikowano w Fragment1.3.0-alpha04. (b/154645875) - Wywołanie
setMenuVisibility(false)w fragmencie teraz prawidłowo zmienia widoczność menu udostępnianych przez jego fragmenty podrzędne. Zostało to wcześniej opublikowane w Fragmencie1.3.0-alpha04. (b/153593580)
Wersja 1.2.4
Wersja 1.2.4
1 kwietnia 2020 r.
androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 i androidx.fragment:fragment-testing:1.2.4 są udostępnione. Wersja 1.2.4 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano reguły ProGuard dla fragmentów, aby umożliwić zaciemnianie zachowanych fragmentów. (b/151605338)
- Wyłączono
FragmentLiveDataObserveregułę Lint w przypadku klasDialogFragment, ponieważ ich cykl życia i cykl życia widoku są zawsze zsynchronizowane, co umożliwia bezpieczne używanie funkcjithislubviewLifecycleOwnerpodczas wywoływania funkcjiobserve. (b/151765086)
Wersja 1.2.3
Wersja 1.2.3
18 marca 2020 r.
androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 i androidx.fragment:fragment-testing:1.2.3 są udostępnione. Wersja 1.2.3 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd w
DialogFragment, który powodowałStackOverflowErrorpodczas wywoływaniagetLayoutInflater()z poziomuonCreateDialog(). (b/117894767, aosp/1258665) - Zmniejszyliśmy zakres reguł ProGuard uwzględnionych w fragmencie, aby zapewnić możliwość usuwania nieużywanych klas fragmentów. (b/149665169)
- Rozwiązaliśmy problem z fałszywie dodatnimi wynikami sprawdzania
UseRequireInsteadOfGetLint w przypadku używania nazwy zmiennej lokalnej, która przesłaniała nazwę właściwości Kotlin. (b/149891163) FragmentContainerViewnie zgłasza już błęduUnsupportedOperationExceptionw przypadku użycia nieprawidłowego konstruktora w podglądzie układu. (b/149707833)
Wersja 1.2.2
Wersja 1.2.2
19 lutego 2020 r.
androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 i androidx.fragment:fragment-testing:1.2.2 są udostępnione. Wersja 1.2.2 zawiera te zatwierdzenia.
Nowe testy Lint
- Linter sugeruje użycie
viewLifecycleOwnerjakoLifecycleOwnerw wywołaniach funkcjiOnBackPressedDispatcherw przypadkuonCreateView(),onViewCreated()ionActivityCreated(). (b/142117657) - Dodano nowe sprawdzenie Lint, które potwierdza, że podczas korzystania z artefaktu
fragment-testingużywasz prawidłowegodebugImplementation. (b/141500106) - Fragmenty sugerują teraz używanie powiązanych metod
require___()w celu uzyskania bardziej opisowych komunikatów o błędach zamiastcheckNotNull(get___()),requireNonNull(get___())lubget___()!!w przypadku wszystkich interfejsów API fragmentów, które zawierają odpowiednikigetirequire. (aosp/1202883)
Poprawki błędów
- Naprawiono pliki ProGuard fragmentów, aby uniknąć ostrzeżeń R8 (b/148963981).
- Ulepszyliśmy istniejące sprawdzanie Lint, które sugeruje używanie
viewLifecycleOwnerzamiastobserve, aby obsługiwać też wersję metody rozszerzenialivedata-ktxfunkcjiobserve. (b/148996309) - Poprawiono formatowanie wielu testów Lint (aosp/1157012).
Współpraca z osobami z zewnątrz
- Dziękujemy Zacowi Sweersowi za udostępnienie
require___()testów Lint w imieniu Slacka. (aosp/1202883)
Wersja 1.2.1
Wersja 1.2.1
5 lutego 2020 r.
androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 i androidx.fragment:fragment-testing:1.2.1 są udostępnione. Wersja 1.2.1 zawiera te zmiany.
Poprawki błędów
- Fragmenty dodane za pomocą metod
addireplace, które przyjmują instancjęClass(lub wersje Kotlin reified), mają teraz domyślny konstruktor zachowywany przez ProGuard. (b/148181315) - Metody
FragmentStatePagerAdapteriFragmentPagerAdapternie przechwytują już wyjątków zgłaszanych przezFragmentManagerpodczas wykonywaniafinishUpdate(). (aosp/1208711) - Rozwiązaliśmy problem polegający na tym, że funkcja
FragmentManager.findFragment()nie działała w przypadku fragmentów dodanych za pomocą tagu<fragment>. (b/147784323) - Fragmenty rozszerzone za pomocą tagu
<fragment>zawsze otrzymują wywołanie funkcjionInflate()przedonCreate(), gdy znajdują się w układzie. (aosp/1215856) - Wywołanie
toString()w instancjiFragmentManagernie powoduje już błęduNullPointerException, gdy aktywność jest już zniszczona. (b/148189412)
Zmiany zależności
- Fragmenty
1.2.1zależą teraz od Lifecycle ViewModel SavedState2.2.0.
Wersja 1.2.0
Wersja 1.2.0
22 stycznia 2020 r.
androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 i androidx.fragment:fragment-testing:1.2.0 są udostępnione. Wersja 1.2.0 zawiera te zmiany.
Ważne zmiany od wersji 1.1.0
- FragmentContainerView:
FragmentContainerViewto zalecany kontener dla dynamicznie dodawanych obiektów Fragment, który zastępujeFrameLayouti inne układy. Obsługuje też te same parametryclass,android:namei opcjonalny parametrandroid:tagco tag<fragment>, ale do dodania tego początkowego fragmentu używa zwykłego taguFragmentTransaction, a nie ścieżki kodu niestandardowego używanej przez tag<fragment>. onDestroyView()timing: fragmenty czekają teraz na zakończenie animacji wyjścia, przejść platformy wyjścia i przejść AndroidX (gdy używasz przejścia1.3.0) przed wywołaniemonDestroyView().- Oparte na klasach
add()ireplace(): dodano nowe przeciążenia funkcjiadd()ireplace()wFragmentTransaction, które przyjmują argumentyClass<? extends Fragment>i opcjonalnieBundle. Te metody używająFragmentFactorydo utworzenia instancji fragmentu, który ma zostać dodany. Dofragment-ktxdodaliśmy też rozszerzenia Kotlin, które używają typów reifikowanych (np.fragmentTransaction.replace<YourFragment>(R.id.container)). - Integracja ViewModel z SavedState w cyklu życia:
SavedStateViewModelFactoryjest teraz domyślną fabryką używaną podczas korzystania zby viewModels(),by activityViewModels(), konstruktoraViewModelProviderlubViewModelProviders.of()z fragmentem. - Nowe sprawdzanie Lint: dodaliśmy nowe sprawdzanie Lint, które zapewnia, że podczas obserwowania
LiveDatazonCreateView(),onViewCreated()lubonActivityCreated()używaszgetViewLifecycleOwner(). getFragmentManager()wycofanie: metodygetFragmentManager()irequireFragmentManager()w klasie Fragment zostały wycofane i zastąpione jedną metodągetParentFragmentManager(), która zwraca niepusty obiektFragmentManager, do którego dodano fragment (możesz użyć metodyisAdded(), aby sprawdzić, czy można ją bezpiecznie wywołać).FragmentManager.enableDebugLogging()wycofanie: statyczna metodaFragmentManager.enableDebugLoggingzostała wycofana. Klasa FragmentManager uwzględnia teraz wartośćLog.isLoggable()w przypadku taguFragmentManager, co umożliwia włączanie rejestrowaniaDEBUGlubVERBOSEbez ponownej kompilacji aplikacji.
Znane problemy
- Fragmenty, do których odwołuje się tylko atrybut
classlubandroid:namewFragmentContainerView, nie są automatycznie zachowywane przez ProGuard, co wymaga ręcznego dodania reguły zachowywania dla każdej klasy fragmentu. (b/142601969) - Gdy dodajesz
NavHostFragmentza pomocąclasslubandroid:namew XML zFragmentContainerView, nie możesz używaćfindNavController()wonCreate()aktywności. (b/142847973)
Wersja 1.2.0-rc05
8 stycznia 2020 r.
androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 i androidx.fragment:fragment-testing:1.2.0-rc05 są udostępnione. Wersja 1.2.0-rc05 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy regresję w fragmencie
1.2.0-rc04podczas używania tagu<fragment>, która powodowała nieprawidłowe wywoływanie funkcjionViewCreated()podczas niszczenia aktywności. (b/146290333) - Fragmenty dodane za pomocą tagu
<fragment>mają teraz prawidłowo wyczyszczone ustawienia inne niż konfiguracyjne, nawet jeśli czasami znajdują się w układzie (np. tylko w układzie poziomym). W rezultacie te fragmenty są teraz prawidłowo przenoszone doCREATED, nawet jeśli nie znajdują się w układzie, zamiast być tworzone, ale nigdy nie przechodzić przez żadne metody cyklu życia. (b/145769287)
Wersja 1.2.0-rc04
18 grudnia 2019 r.
androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 i androidx.fragment:fragment-testing:1.2.0-rc04 są udostępnione. Wersja 1.2.0-rc04 zawiera te zmiany.
Poprawki błędów
- Dostosowano animacje dla
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEiTRANSIT_FRAGMENT_FADE, aby uniknąć problemów wizualnych. (b/145468417)
Wersja 1.2.0-rc03
4 grudnia 2019 r.
androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 i androidx.fragment:fragment-testing:1.2.0-rc03 są udostępnione. Wersja 1.2.0-rc03 zawiera te zmiany.
Poprawki błędów
- Usunięto niezamierzoną zmianę w działaniu, która powodowała, że usunięte fragmenty były nadal zwracane przez
findFragmentById()/findFragmentByTag()podczas działania animacji/przejść wyjścia. (b/143982969, aosp/1167585) - Fragmenty podrzędne są teraz prawidłowo zatrzymywane przed fragmentami nadrzędnymi, gdy aktywność zawierająca wywołuje
onSaveInstanceState(). (b/144380645) - Rozwiązaliśmy problem, który powodował, że po wycofaniu ukrytego fragmentu widoki były nieprawidłowo oznaczane symbolem
INVISIBLE. (b/70793925) - Przejścia między udostępnionymi elementami fragmentów obsługują teraz widoki, które zostały obrócone, przeskalowane itp. (b/142835261)
Aktualizacje dokumentacji
- Doprecyzowaliśmy dokumentację wycofania dotyczącą
setUserVisibleHint(). (b/143897055) - Ulepszyliśmy dokumentację dotyczącą
setFragmentFactory()igetFragmentFactory(), aby lepiej wyjaśnić, że ustawienieFragmentFactorywpływa też na menedżery fragmentów podrzędnych. (aosp/1170095)
Zmiany zależności
- Fragmenty zależą teraz od komponentów Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03i Activity1.1.0-rc03.
Wersja 1.2.0-rc02
7 listopada 2019 r.
androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 i androidx.fragment:fragment-testing:1.2.0-rc02 są udostępnione. Wersja 1.2.0-rc02 zawiera te zmiany.
Poprawki błędów
- W języku Kotlin poprawka LintFix dotycząca używania
getViewLifecycleOwner()podczas obserwowaniaLiveDatazonCreateView(),onViewCreated()lubonActivityCreated()(wprowadzona w fragmencie1.2.0-rc01) używa teraz składni dostępu do właściwości KotlinviewLifecycleOwnerzamiastgetViewLifecycleOwner(). (aosp/1143821)
Wersja 1.2.0-rc01
23 października 2019 r.
androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 i androidx.fragment:fragment-testing:1.2.0-rc01 są udostępnione. Wersja 1.2.0-rc01 zawiera te zmiany.
Nowe funkcje
- Tag
FragmentContainerViewobsługuje teraz atrybutclassoprócz atrybutuandroid:name, co odzwierciedla funkcjonalność tagu<fragment>. (b/142722242) - Dodano nowe sprawdzenie Lint, które zapewnia, że podczas obserwowania
LiveDatazonCreateView(),onViewCreated()lubonActivityCreated()używaszgetViewLifecycleOwner(). (b/137122478)
Poprawki błędów
- Wywołania zwrotne
onDismissionCancelwDialogFragmentgwarantują teraz, że przekazywany do nich elementDialogInterfacenie ma wartości null i że po ich wykonaniu funkcjagetDialog()zwraca wartość inną niż null. (b/141974033) FragmentContainerViewdodaje teraz fragment zdefiniowany przezclasslubandroid:namew ramach rozszerzenia, dzięki czemufindFragmentById()ifindFragmentByTag()działają od razu. (b/142520327)- Naprawiono
IllegalStateExceptionwFragmentContainerViewspowodowany zapisaniem stanu. (b/142580713) - Rozwiązaliśmy problem
UnsupportedOperationExceptionwFragmentContainerView, gdy klasaFragmentContainerViewjest zaciemniona. (b/142657034)
Znane problemy
- Fragmenty, do których odwołuje się tylko atrybut
classlubandroid:namewFragmentContainerView, 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ą przejście naFragmentContainerView, dopóki nie zostanie to naprawione za pomocąaapt2. (b/142601969)
Wersja 1.2.0-beta02
11 października 2019 r.
androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 i androidx.fragment:fragment-testing:1.2.0-beta02 są udostępnione. Wersja 1.2.0-beta02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że element
onInflate()nie otrzymywał odpowiednich atrybutów z elementuFragmentContainerView, co powodowało błędy w przypadkach takich jakNavHostFragment. (b/142421837)
Wersja 1.2.0-beta01
9 października 2019 r.
androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 i androidx.fragment:fragment-testing:1.2.0-beta01 są udostępnione. Wersja 1.2.0-beta01 zawiera te zmiany.
Nowe funkcje
FragmentContainerViewdodaje obsługę dodawania początkowego fragmentu z dodatkową obsługą atrybutów XMLandroid:namei opcjonalnego atrybutuandroid:tag. W przeciwieństwie do tagu<fragment>tagFragmentContainerViewużywa zwykłego taguFragmentTransaction, aby dodać początkowy fragment, co umożliwia dalsze operacjeFragmentTransactionna taguFragmentContainerViewi korzystanie z powiązania widoku w przypadku układu. (b/139830628, b/141177981)- Fragmenty zawierają teraz ostrzeżenie Lint z szybką poprawką, która umożliwia zastąpienie znaku
<fragment>znakiemFragmentContainerView. (b/139830056)
Poprawki błędów
- Naprawiono
ClassCastExceptionpodczas korzystania z funkcjiandroidx.transition. (b/140680619) - Podczas korzystania z Transition
1.3.0-beta01fragmenty czekają teraz na zakończenie przejśćandroidx.transition(oprócz przejść i animacji platformy, które zostały naprawione odpowiednio w Fragment1.2.0-alpha03i Fragment1.2.0-alpha02) przed wysłaniemonDestroyView(). (aosp/1119841) - Podczas korzystania z przejścia
1.3.0-beta01fragmenty prawidłowo anulują przejściaandroidx.transitionprzed rozpoczęciem nowych przejść lub animacji w tym samym kontenerze. (aosp/1119841) - Rozwiązano problem w przypadku interfejsu API w wersji 17 i starszych, który występował podczas używania
androidx.transitionprzejść w widoku głównym fragmentu podczas korzystania zFragmentContainerView. (b/140361893) - Artefakt
fragment-testingzależy teraz od AndroidX Test1.2.0, co rozwiązuje problem z niezgodnością z najnowszą wersją Espresso 3.2.0. (b/139100149) - Usunięto korzystanie z danych (
Log.w) w klasie FragmentManager. (aosp/1126468)
Znane problemy
- Fragmenty
onInflate()nie otrzymują odpowiednich atrybutów zFragmentContainerView, co powoduje problemy w przypadkach takich jakNavHostFragment. (b/142421837)
Wersja 1.2.0-alpha04
18 września 2019 r.
androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 i androidx.fragment:fragment-testing:1.2.0-alpha04 są udostępnione. Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
getFragmentManager()irequireFragmentManager()wFragmentzostały wycofane i zastąpione jedną metodągetParentFragmentManager(), która zwraca niepusty obiektFragmentManager, do którego dodano Fragment (możesz użyćisAdded(), aby sprawdzić, czy można bezpiecznie wywołać tę metodę). (b/140574496) - Statyczna metoda
FragmentManager.enableDebugLoggingzostała wycofana. FragmentManager uwzględnia teraz wartośćLog.isLoggable()w przypadku taguFragmentManager, co umożliwia włączanie rejestrowaniaDEBUGlubVERBOSEbez ponownej kompilacji aplikacji. (aosp/1116591)
Poprawki błędów
- Fragmenty są teraz prawidłowo niszczone podczas działania animacji wyjścia w innych fragmentach. (b/140574199)
- Rozwiązaliśmy problem, który powodował, że fragmenty wywoływały
Activity.findViewById(), czego wcześniej nie robiły. (aosp/1116431)
Wersja 1.2.0-alpha03
5 września 2019 r.
androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 i androidx.fragment:fragment-testing:1.2.0-alpha03 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
FragmentContainerViewto terazfinal. (b/140133091)
Poprawki błędów
FragmentContainerViewteraz prawidłowo odwraca kolejność rysowania podczas usuwania fragmentów z listy wstecznej. (b/139104187)- Rozwiązaliśmy problem polegający na tym, że podczas jednoczesnego usuwania fragmentu i dodawania nowego fragmentu uruchamiała się nieprawidłowa animacja. (b/111659726)
- Fragmenty czekają teraz na zakończenie przejść (oprócz animacji, co zostało poprawione w fragmencie
1.2.0-alpha02), zanim wyśląonDestroyView(). (b/138741697)
Wersja 1.2.0-alpha02
7 sierpnia 2019 r.
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 uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
SavedStateViewModelFactoryjest teraz domyślną fabryką używaną podczas korzystania z funkcjiby viewModels(),by activityViewModels(), konstruktoraViewModelProviderlubViewModelProviders.of()z obiektemFragment. (b/135716331)- Domyślne animacje podczas korzystania z
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEzsetTransitionnaFragmentTransactionzostały zaktualizowane, aby pasowały do animacji używanych przez aktywności na urządzeniach z Androidem 10. (aosp/1012812, aosp/1014730)
Zmiany w interfejsie API
- Wprowadza
FragmentContainerViewjako wysoce zalecany kontener dla dynamicznie dodawanych fragmentów, zastępując użycieFrameLayoutitp., ponieważ rozwiązuje problemy z kolejnością animacji w osi Z i przekazywaniem wstawek okna do fragmentów. (b/37036000, aosp/985243, b/136494650) - Dodano statyczną metodę
FragmentManager.findFragment(View)do pobierania fragmentu zawierającego widok utworzony przez fragment. Rozszerzenie Kotlin jest też dostępne w językufragment-ktx. (aosp/1090757) - Dodaliśmy nowe przeciążenia funkcji
add()ireplace()wFragmentTransaction, które przyjmują argumentyClass<? extends Fragment>i opcjonalnieBundle. Te metody używająFragmentFactorydo utworzenia instancji fragmentu, który ma zostać dodany. Dofragment-ktxdodaliśmy też rozszerzenia Kotlin, które używają typów konkretnych (np.fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987) - Do wywołań zwrotnych cyklu życia
Fragmentdodano adnotacje@MainThread. (b/127272564) - Interfejsy API związane z tytułem ścieżki na stronach
FragmentTransactioniFragmentManager.BackStackEntryzostały wycofane. (b/138252944) - Metoda
setTransitionStylew usłudzeFragmentTransactionzostała wycofana. (aosp/1011537) - Wiele metod w
FragmentManagernie jest jużabstract.FragmentManagerpozostajeabstracti nie należy go bezpośrednio tworzyć ani rozszerzać. Nadal należy pobierać istniejącą instancję tylko zgetSupportFragmentManager(),getChildFragmentManager()itp.
Poprawki błędów
- W fragmencie
1.1.0-rc04: fragmenty prawidłowo anulują odroczone przejścia po usunięciu fragmentów. (b/138251858) - Z Fragmentu
1.1.0-rc03: rozwiązaliśmy problem, który powodował, że wywoływanie funkcjipostponeEnterTransition()z limitem czasu więcej niż raz nie anulowało poprzednich limitów czasu. (b/137797118) - Z Fragment
1.1.0-rc02: naprawiono błąd wFragmentPagerAdapteriFragmentStatePagerAdapterpodczas usuwania bieżącego elementu. (b/137209870) - Fragmenty czekają teraz na zakończenie animacji przed wysłaniem
onDestroyView(). (b/136110528) - Animacje fragmentów z fragmentów podrzędnych i ich elementów podrzędnych są teraz prawidłowo obsługiwane podczas animowania fragmentu nadrzędnego. (b/116675313)
- Naprawiliśmy
NullPointerExceptionpodczas korzystania z przejść elementów udostępnionych i łączenia operacji wyskakującej i dodawania. (b/120507394) - Dodano obejście problemu z
IllegalStateExceptionpodczas używaniaFragmentPagerAdapteriFragmentStatePagerAdapterw testach Robolectric. (b/137201343)
Wersja 1.2.0-alpha01
2 lipca 2019 r.
androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 i androidx.fragment:fragment-testing:1.2.0-alpha01 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- FragmentManager wywołuje teraz metodę
requestApplyInsets()po dołączeniu widoku Fragmentu i bezpośrednio przed wywołaniem metodyonViewCreated(), dzięki czemu widok zawsze ma prawidłowe wstawki. (b/135945162)
Poprawki błędów
- Rozwiązaliśmy problem z wartością
NullPointerExceptionpodczas wysyłaniaFragmentTransaction, która używałasetPrimaryNavigationFragment()przedreplace(). (b/134673465)
Wersja 1.1.0
Wersja 1.1.0
5 września 2019 r.
androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 i androidx.fragment:fragment-testing:1.1.0 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Ważne zmiany od wersji 1.0.0
- fragment-testing: artefakt
fragment-testingudostępnia klasęFragmentScenariodo testowania fragmentu w izolacji. Więcej informacji znajdziesz w dokumentacji testowania fragmentów aplikacji. - FragmentFactory: możesz teraz ustawić
FragmentFactorywFragmentManager, aby zarządzać tworzeniem instancji fragmentów, co eliminuje ścisły wymóg posiadania konstruktora bez argumentów. - Delegaty właściwości Kotlin dla ViewModeli: artefakt
fragment-ktxzawiera teraz 2 delegaty właściwości Kotlin:by viewModels()do uzyskiwania dostępu do ViewModeli powiązanych z poszczególnymi fragmentami iby activityViewModels()do uzyskiwania dostępu do ViewModeli w zakresie działania aktywności. - Maksymalny cykl życia: możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując
setMaxLifecycle()naFragmentTransaction. Zastępuje on wycofany jużsetUserVisibleHint().FragmentPagerAdapteriFragmentStatePagerAdaptermają nowy konstruktor, który umożliwia przełączenie się na nowe działanie. - Konstruktor FragmentActivity LayoutId: podklasy
FragmentActivitymogą teraz opcjonalnie wywoływać konstruktor wFragmentActivity, który przyjmuje identyfikatorR.layout, wskazując układ, który powinien być ustawiony jako widok treści, zamiast wywoływaćsetContentView()wonCreate(). Nie zmienia to wymagania, aby podklasa miała konstruktor bez argumentów. - Konstruktor Fragment LayoutId: podklasy
Fragmentmogą teraz opcjonalnie wywoływać konstruktor wFragment, który przyjmuje identyfikatorR.layout, wskazując układ, który powinien być używany w tym fragmencie, jako alternatywę dla zastępowaniaonCreateView(). Rozwinięty układ można skonfigurować w usłudzeonViewCreated(). - Postpone with a timeout: dodano nowe przeciążenie
postponeEnterTransition(), które przyjmuje limit czasu.
Wersja 1.1.0-rc04
7 sierpnia 2019 r.
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 uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Fragmenty teraz prawidłowo anulują odroczone przejścia po usunięciu fragmentów. (b/138251858)
Wersja 1.1.0-rc03
19 lipca 2019 r.
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 uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wielokrotne wywoływanie funkcji
postponeEnterTransition()z limitem czasu nie anulowało poprzednich limitów czasu. (b/137797118)
Wersja 1.1.0-rc02
17 lipca 2019 r.
androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 i androidx.fragment-testing:fragment:1.1.0-rc02 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązaliśmy problem z awarią w
FragmentPagerAdapteriFragmentStatePagerAdapterpodczas usuwania bieżącego elementu. (b/137209870)
Wersja 1.1.0-rc01
2 lipca 2019 r.
androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 i androidx.fragment:fragment-testing:1.1.0-rc01 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
- Fragmenty teraz prawidłowo aktualizują swoją widoczność podczas korzystania z operacji
show()lubhide()w trakcie przejścia. (b/133385058) - Rozwiązaliśmy problem z wartością
NullPointerExceptionpodczas wywoływania elementuFragmentTransaction, który używał funkcjisetPrimaryNavigationFragment()przedreplace(). (b/134673465)
Wersja 1.1.0-beta01
5 czerwca 2019 r.
androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 i androidx.fragment:fragment-testing:1.1.0-beta01 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Poprawki błędów
androidx.lifecycle.Lifecyclewywołania zwrotne (dotyczące konkretnieSTARTED,RESUMED,PAUSED,STOPPEDiDESTROYED) w przypadku zagnieżdżonych fragmentów są teraz prawidłowo zagnieżdżone; (b/133497591)- Instancje
OnBackPressedCallbackzarejestrowane wonCreate()fragmentu mają teraz pierwszeństwo przed menedżerem fragmentów podrzędnych. (b/133175997) - Fragmenty podrzędne nie są już animowane, gdy ich fragment nadrzędny jest zastępowany. (b/121017790)
- Animacje i przejścia fragmentów są teraz ignorowane podczas korzystania z
animateLayoutChanges="true". Rozwiązuje to problem polegający na tym, że fragmenty nie były prawidłowo niszczone. (b/116257087)
Wersja 1.1.0-alpha09
16 maja 2019 r.
androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 i androidx.fragment:fragment-testing:1.1.0-alpha09 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Fragmenty otrzymują teraz wywołanie zwrotne do nowej metody
onPrimaryNavigationFragmentChanged(boolean), gdy zmienia się główny fragment nawigacji. aosp/960857
Poprawki błędów
- Elementy menu rozszerzone przez fragment podrzędny są teraz prawidłowo usuwane po usunięciu fragmentu nadrzędnego. b/131581013
Wersja 1.1.0-alpha08
7 maja 2019 r.
androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 i androidx.fragment:fragment-testing:1.1.0-alpha08 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Ta wersja jest niezgodna z biblioteką Preferences w wersjach od 1.1.0-alpha01 do 1.1.0-alpha04. Jeśli używasz tej wersji komponentu Fragments, przejdź na wersję Preferences 1.1.0-alpha05.
Nowe funkcje
- Dodano nowe przeciążenie funkcji
postponeEnterTransition(), które przyjmuje limit czasu. Po jego upływie fragment automatycznie wywoła funkcjęstartPostponedEnterTransition()b/120803208.
Zmiany w interfejsie API
- Zmiana powodująca niezgodność: usunięto wcześniej wycofaną metodę
FragmentFactoryinstantiate, która przyjmowała argumentBundle. aosp/953856 - Zmiana powodująca niezgodność: stałe
RESUME_ONLY_CURRENT_FRAGMENTiUSE_SET_USER_VISIBLE_HINTwFragmentPagerAdapteriFragmentStatePagerAdapterzostały zmienione naBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTiBEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782
Poprawki błędów
- Fragmenty, których cykl życia został ograniczony za pomocą
setMaxLifecycle(), nie są już wznawiane przed osiągnięciem stanu końcowego. b/131557151 - Gdy używasz
setMaxLifecycle(Lifecycle.State.CREATED), widok fragmentów zostanie prawidłowo zniszczony. aosp/954180
Wersja 1.1.0-alpha07
25 kwietnia 2019 r.
androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 i androidx.fragment:fragment-testing:1.1.0-alpha07 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując
setMaxLifecycle()naFragmentTransaction. Zastępuje on wycofany jużsetUserVisibleHint().FragmentPagerAdapteriFragmentStatePagerAdaptermają nowy konstruktor, który umożliwia przełączenie się na nowe działanie. (b/129780800)
Zmiany w interfejsie API
moveToState(STARTED)naFragmentScenariomożna teraz wywoływać tylko na urządzeniach z interfejsem API w wersji 24 lub nowszej. (b/129880016)
Zmiany w zachowaniu
- W konsekwencji (b/129907905) fragmenty na stosie wstecznym nie otrzymają wywołania zwrotnego do
onCreateView(), gdy aktywność hosta zostanie ponownie utworzona.onCreateView()będzie teraz wywoływana tylko wtedy, gdy fragment stanie się widoczny (tzn. gdy stos wsteczny zostanie usunięty).
Poprawki błędów
- Naprawiliśmy problem występujący podczas używania tagu
<fragment>w XML i konstruktoracontentLayoutIdw przypadkuFragmentActivitylubAppCompatActivity. (b/129907905) - Rozwiązaliśmy problem, który powodował, że fragmenty na stosie wstecznym nie były przenoszone co najmniej do stanu
CREATEDpo zmianie konfiguracji, co powodowało nieprawidłowe usuwanie obiektów ViewModel i podrzędnych fragmentów zachowywanych. (b/129593351) - Rozwiązaliśmy problem z awarią w
restoreSaveStatespowodowaną rozsynchronizowaniem zachowanych fragmentów po zapisaniu stanu instancji. (b/130433793) (aosp/947824) - Rozwiązaliśmy problemy, które powodowały, że funkcja
OnBackPressedCallbackdodana za pomocą cyklu życia fragmentu nie była wywoływana, jeśliFragmentManagermiał stos wsteczny. Więcej informacji znajdziesz w androidx.activity 1.0.0-alpha07. (aosp/948209) - Fragmenty nie wymuszają już
LAYER_TYPE_HARDWAREw przypadku animacji. Jeśli potrzebujesz animacji warstwy sprzętowej, ustaw ją jako część animacji. (b/129486478)
Wersja 1.1.0-alpha06
3 kwietnia 2019 r.
androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 i androidx.fragment:fragment-testing:1.1.0-alpha06 są udostępnione. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Wyjątki zgłaszane przez FragmentManager zawierają teraz w komunikacie nazwę fragmentu. (b/67759402)
Zmiany w interfejsie API
- Klasy
FragmentiFragmentActivityzawierają teraz drugi konstruktor, który przyjmuje wartość@LayoutRes int. Zastępuje on poprzednie działanie polegające na dodawaniu do klasy adnotacji@ContentView. To podejście działa zarówno w modułach aplikacji, jak i biblioteki. (b/128352521) - Metoda
onActivityResult()klasy FragmentActivity jest teraz prawidłowo oznaczona jako@CallSuper. (b/127971684) - Metoda
instantiateklasy FragmentFactory, która przyjmuje argument Bundle, została wycofana. Aplikacje powinny używać nowego przeciążeniainstantiate, które nie przyjmuje argumentu Bundle. (b/128836103) - Metody
FragmentScenariosą teraz prawidłowo oznaczone adnotacją@StyleRes. (aosp/924193) - Środowisko wykonawcze
FragmentTabHostzostało wycofane. (b/127971835) - Metoda
getThemedContext()klasy FragmentActivity została usunięta. (aosp/934078)
Poprawki błędów
- Naprawiliśmy regresję w wersji 1.1.0-alpha05, która powodowała miganie przychodzącego fragmentu na ekranie. (b/129405432)
- Rozwiązaliśmy problem, który powodował, że po serii operacji popBackStack+replace+popBackStack znikał główny fragment nawigacji. (b/124332597)
- Rozwiązaliśmy problem z używaniem konstruktorów
@ContentVieww aktywności podczas przywracania stanu fragmentu. (b/127313094) - Poprawiono logikę
setTargetFragment()podczas zastępowania istniejącego docelowego fragmentu fragmentem, który nie jest jeszcze dołączony do menedżera fragmentów. (aosp/932156)
Wersja 1.1.0-alpha05
13 marca 2019 r.
androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 i androidx.fragment:fragment-testing:1.1.0-alpha05 są udostępnione. Pełną listę zmian w tej wersji znajdziesz tutaj.
Nowe funkcje
- Wyszukiwania adnotacji
@ContentViewsą teraz zapisywane w pamięci podręcznej (b/123709449).
Zmiany w zachowaniu
- Wywoływanie funkcji
remove(),hide(),show(),detach()isetPrimaryNavigationFragment()z fragmentem dołączonym do innego menedżera fragmentów powoduje teraz zgłoszenie wyjątkuIllegalStateExceptionzamiast cichego niepowodzenia (aosp/904301).
Poprawki błędów
onNewIntentw przypadkuFragmentActivityjest teraz prawidłowo oznaczony jako@CallSuper(b/124120586)- Rozwiązaliśmy problem, w którym funkcja
DialogFragmentonDismiss()mogła być wywoływana dwukrotnie podczas korzystania z funkcjigetDialog().dismiss()lubgetDialog().cancel()(b/126563750).
Wersja 1.1.0-alpha04
7 lutego 2019 r.
androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 i androidx.fragment:fragment-testing 1.1.0-alpha04 są udostępnione.
Nowe funkcje
- Dodaliśmy obsługę adnotacji klasy
@ContentView, która umożliwia wskazanie, który plik XML układu powinien zostać rozszerzony jako alternatywa dla zastąpieniaonCreateView(). Zalecamy wykonywanie zadań związanych z wyświetlaniem wonViewCreated(). (aosp/837619) fragment-testingzależy teraz odandroidx.test:core-ktx1.1.0 stable (b/121209673)- Możesz teraz używać
openActionBarOverflowOrOptionsMenuzFragmentScenariodo testowania menu opcji hostowanych przez fragment (b/121126668).
Zmiany w interfejsie API
- Dodaliśmy metodę
requireArguments(), która zwraca@NonNull Bundlelub zgłasza wyjątekIllegalStateException(b/121196360). - Dodaliśmy informację, że wartości
getLifecycle(),getViewLifecycleOwner()igetViewLifecycleOwnerLiveData()nie powinny być zastępowane i zostaną ustalone w przyszłej wersji. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (aosp/880714) - Dodaliśmy informację, że wartości
getViewModelStore()nie należy zastępować i w przyszłej wersji zostanie ona ostatecznie ustalona. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (aosp/880713) - Rozwiązaliśmy problem z kompatybilnością binarną z poprzednimi wersjami Fragmentów. (aosp/887877) (aosp/889834)
Poprawki błędów
- Fragmenty docelowe są prawidłowo usuwane, gdy do funkcji
setTargetFragment()przekazywana jest wartośćnull. (aosp/849969) - Rozwiązaliśmy problem, który powodował, że docelowe fragmenty były czasami niedostępne w
onDestroy()lub po nim. (b/122312935) - Metoda onDismiss() klasy DialogFragment jest teraz wywoływana przed
onDestroy(). (aosp/874133) (aosp/890734)
Wersja 1.1.0-alpha03
17 grudnia 2018 r.
Nowe funkcje
- Fragment implementuje teraz
BundleSavedStateRegistryOwneri jest zależny od nowo wydanej biblioteki SavedState [aosp/824380]. - Dodano
by activityViewModelsdelegata właściwości Kotlin, aby pobierać obiekty ViewModel powiązane z zawierającym je działaniem [b/119050253] - Delegat właściwości Kotlin
by viewModelszostał rozszerzony o opcjonalną metodę lambda do pobieraniaViewModelStoreOwner, co umożliwia przekazywanie nadrzędnego fragmentu lub innego niestandardowegoViewModelStoreOwnerza pomocą kodu takiego jakval viewModel: MyViewModel by viewModels(::requireParentFragment)[b/119050253].
Zmiany w interfejsie API
FragmentScenarioumożliwia teraz określenie motywu, np.Theme.AppCompat[b/119054431]. Jest to zmiana powodująca niezgodność.- Dodaliśmy metodę
requireView(), która zwraca@NonNull Viewlub zgłasza wyjątekIllegalStateException[b/120241368]. - Dodaliśmy metodę
requireParentFragment(), która zwraca wartość@NonNull Fragmentlub zgłasza wyjątekIllegalStateException[b/112103783].
Poprawki błędów
- Naprawiono błąd IllegalStateException: Failure saving state b/120814739
- Fragmenty przywracane z zapisanego stanu instancji będą teraz zawsze otrzymywać wartość niezerową
Bundle[b/119794496] - Usunięte fragmenty nie używają już ponownie obiektu
Lifecycle, jeśli zostaną ponownie dodane [b/118880674].
Wersja 1.1.0-alpha02
3 grudnia 2018 r.
Nowe funkcje
- Rozszerzenia Kotlin w klasie FragmentScenario umożliwiają teraz używanie wyrażenia lambda do tworzenia fragmentu jako alternatywy dla przekazywania instancji
FragmentFactory. (aosp/812913)
Poprawki błędów
- Naprawiono błąd IllegalStateException podczas używania zagnieżdżonych fragmentów na stosie wstecznym (b/119256498).
- Usunięto awarię podczas korzystania z
FragmentScenario.recreate()na urządzeniuFragmentFactory(aosp/820540) - Rozwiązaliśmy problem, który powodował, że po usunięciu fragmentu docelowego nie można było uzyskać do niego dostępu (aosp/807634).
Wersja 1.1.0-alpha01
5 listopada 2018 r.
To pierwsza wersja artefaktu fragment-testing i FragmentScenario, który jest oparty na interfejsach API androidx.test:core. Więcej informacji znajdziesz w dokumentacji testowania fragmentów.
Nowe funkcje
- Nowa klasa FragmentScenario do testowania fragmentów osobno.
- Możesz teraz ustawić
FragmentFactoryw dowolnymFragmentManager, aby kontrolować sposób tworzenia nowych instancji Fragment. - Dodaliśmy nowy delegat właściwości Kotlin
by viewModels()do pobierania ViewModeli z fragmentu. - Oczekujące zdarzenia wejściowe (np. kliknięcia) są teraz anulowane w
onStop()Fragmentu.
Zmiany w interfejsie API
- Znacznie rozszerzyliśmy adnotacje dotyczące dopuszczalności wartości null w interfejsie Fragment API.
Poprawki błędów
- Rozwiązano problem, który powodował niepowodzenie operacji Fragment w LiveData (b/77944637)
Znane problemy
- Po usunięciu fragmentu z menedżera fragmentów nie można uzyskać dostępu do fragmentów docelowych.
fragment-testingzależy odandroidx.test:core:1.0.0-beta01zamiast od prawidłowegoandroidx.test:core:1.0.0.