Fragment

Podziel aplikację na kilka niezależnych ekranów hostowanych w ramach aktywności.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
20 marca 2024 r. 1.6.2 - 1.7.0-beta01 -

Deklarowanie zależności

Aby dodać zależność do fragmentu Fragment, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

dependencies {
    def fragment_version = "1.6.2"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.6.2"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.7

Wersja 1.7.0-beta01

20 marca 2024 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-beta01 została zwolniona. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Parametr FragmentHostCallback jest teraz zapisywany w Kotlin tak, aby wartość null rodzaju ogólnego typu hosta odpowiadała wartości null typu zwracanego typu onGetHost(). (I40af5)

Poprawki błędów

  • Naprawiono błąd polegający na tym, że po wykonaniu gestu prognozowania wstecznego we fragmencie, który nie znajduje się w kontenerze, fragment ten nigdy nie został zniszczony. Fragment zostanie natychmiast przeniesiony do stanu końcowego. (Ida0d9).
  • Naprawiono błąd w plikach Fragments, który powodował, że przerywanie przychodzących przejść gestem przewidywania powrotu powodowało zniszczenie widoku wprowadzania i pozostawienie pustego ekranu. (Id3f22, b/319531491)

Wersja 1.7.0-alfa10

7 lutego 2024 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha10 została zwolniona. Wersja 1.7.0-alpha10 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy znany problem w poprzedniej wersji Fragmentu, w wyniku którego przy korzystaniu z funkcji przewidywania wstecznej strony Fragment w przypadku przejścia Animator lub AndroidaX Fragmenty powodowały zwracanie błędu NullPointerException z poziomu handleOnBackProgressed, jeśli nigdy nie dodano FragmentManager.OnBackStackChangedListener w interfejsie addOnBackStackChangedListener. (I7c835)

Wersja 1.7.0-alfa09

24 stycznia 2024 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha09 została zwolniona. Wersja 1.7.0-alpha09 zawiera te zatwierdzenia.

Artefakt tworzenia fragmentu kodu

Utworzono nowy artefakt fragment-compose, który skupia się na obsłudze aplikacji, które są w trakcie przechodzenia z architektury opartej na fragmentach na architekturę w pełni opartą na tworzeniu.

Pierwszą funkcją dostępną w tym nowym artefakcie jest metoda rozszerzenia content w Fragment, która ma ułatwić korzystanie z funkcji Utwórz w interfejsie pojedynczego fragmentu. Aby to zrobić, wystarczy utworzyć ComposeView i ustawić prawidłową wartość ViewCompositionStrategy. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

Nowe funkcje

  • FragmentManager.OnBackStackChangedListener() udostępnia teraz zdarzenia onBackStackChangeProgressed() i onBackStackChangeCancelled() do otrzymywania odpowiednio prognozowanych postępów oraz anulowanych zdarzeń. (214b87)

Znany problem

  • W przypadku korzystania z funkcji przewidywania wstecznego przejścia w elemencie Fragment w przypadku przejścia Animator lub przejścia AndroidX Fragmenty będą zgłaszać atak NullPointerException z protokołu handleOnBackProgressed, jeśli nigdy nie dodano elementu FragmentManager.OnBackStackChangedListener w ramach funkcji addOnBackStackChangedListener. Ręczne dodanie detektora rozwiąże problem. Poprawka tego błędu będzie dostępna w następnej wersji aplikacji Fragmenty.

Wersja 1.7.0-alfa08

10 stycznia 2024 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha08 została zwolniona. Wersja 1.7.0-alpha08 zawiera te zatwierdzenia.

Czyszczenie danych

Wersja 1.7.0-alfa07

29 listopada 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha07 została zwolniona. Wersja 1.7.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd NullPointerException powodowany przez ustawienie przejścia elementu współdzielonego oraz brak ustawienia wejścia/wyjścia. (I8472b)
  • Z fragmentu 1.6.2: gdy fragment kodu FragmentContainerView zostanie powiększony, jego stany takie jak FragmentManager, Host i id są teraz dostępne w wywołaniu zwrotnym onInflate. (I1e44c, b/307427423)
  • Z fragmentu 1.6.2: jeśli używasz clearBackStack do usuwania zestawu fragmentów, ViewModel każdego zagnieżdżonego fragmentu nadrzędnego jest teraz wyczyszczona, gdy pole ViewModels fragmentu nadrzędnego jest wyczyszczone. (I6d83c, b/296173018)

Wersja 1.7.0-alfa06

4 października 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha06 została zwolniona. Wersja 1.7.0-alpha06 zawiera te zatwierdzenia.

Aktualizacja zależności

  • Fragmenty kodu zostały zaktualizowane, aby były zgodne z nowym interfejsem API animateToStart dodanym w przeniesieniu 1.5.0-alpha04.

Wersja 1.7.0-alfa05

20 września 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha05 została zwolniona. Wersja 1.7.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Fragmenty zapewniają teraz obsługę funkcji prognozowania wstecznego podczas korzystania z przejścia Androidx. Dzięki temu możesz używać gestu wstecz, aby przechodzić do poprzedniego fragmentu za pomocą własnego przejścia Androidx, zanim zdecydujesz się zatwierdzić lub anulować transakcję za pomocą wykonanego gestu. Aby włączyć tę funkcję, musisz korzystać z wersji Przenieś 1.5.0-alpha03. (Ib49b4, b/285175724)

Znane problemy

  • Obecnie występuje problem, który polega na tym, że po anulowaniu gestu wstecz z przejściem następnym razem, gdy znowu użyjesz gestu cofania, przejście nie zostanie wykonane, a ten ekran będzie pusty. Przyczyną może być problem w bibliotece przenoszenia. (b/300157785). Jeśli zauważysz ten problem, zgłoś problem dotyczący fragmentu kodu, podając przykładowy projekt, który odtwarza problem. Przewidywanie działań możesz wyłączyć, używając funkcji FragmentManager.enabledPredictiveBack(false) w sekcji onCreate() Twojej aktywności.

Wersja 1.7.0-alfa04

6 września 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha04 została zwolniona. Wersja 1.7.0-alpha04 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd związany z anulowaniem gestu przewidywania wstecznego, który powodował, że fragmenty nie mogły przejść do prawidłowego stanu cyklu życia. (I7cffe, b/297379023)
  • Naprawiono regresje, w których animacje mogły być uruchamiane z przejściami. (I59f36)
  • Naprawiono błąd związany z używaniem funkcji przewidywanego powrotu z fragmentami, w przypadku których dwukrotne przejście w szybkiej kolejności od drugiego do ostatniego fragmentu na tylnym stosie powodowało awarię. (Ifa1a4)

Wersja 1.7.0-alfa03

23 sierpnia 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha03 została zwolniona. Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd z fragmentami przy użyciu funkcji przewidywania wstecznej, która powodowała pominięcie pierwszego fragmentu w tylnym stosie menedżera fragmentów i zakończenie działania w przypadku używania wstecznego systemu za pomocą trzech przycisków lub gestu przewidywanego przejścia wstecz. (I0664b, b/295231788)

Wersja 1.7.0-alfa02

9 sierpnia 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha02 została zwolniona. Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • W przypadku używania fragmentów z funkcją przewidywania gestów wstecznych z interfejsu API 34, jeśli używasz systemu przejść, który nie obsługuje przewijania (Animations, Transitions) lub w ogóle nie ma przejść, Fragmenty będą teraz czekać na zakończenie gestu przed wykonaniem działania wstecz. (I8100c)

Wersja 1.7.0-alfa01

7 czerwca 2023 r.

Aplikacja androidx.fragment:fragment-*:1.7.0-alpha01 została zwolniona. Ta wersja została opracowana w gałęzi wewnętrznej.

Nowe funkcje

  • Fragmenty zapewniają teraz obsługę funkcji prognozowania w aplikacji podczas korzystania z metody Animator. Dzięki temu możesz użyć gestu wstecz, aby zobaczyć poprzedni fragment w niestandardowym animatorze, zanim zdecydujesz, czy chcesz zatwierdzić transakcję zakończonym gestem czy anulować. Możesz też wyłączyć to nowe zachowanie, używając eksperymentalnego elementu enablePredictiveBack() i przekazując false.

Wersja 1.6

Wersja 1.6.2

1 listopada 2023 roku

Aplikacja androidx.fragment:fragment-*:1.6.2 została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Po powiększeniu fragmentu elementu FragmentContainerView jego stany, takie jak FragmentManager, Host i id, są teraz dostępne w wywołaniu zwrotnym onInflate. (I1e44c, b/307427423)
  • Jeśli użyjesz polecenia clearBackStack do usunięcia zestawu fragmentów, ViewModel zagnieżdżonego fragmentu kodu zostanie teraz wyczyszczona, gdy pole ViewModels fragmentu nadrzędnego zostanie wyczyszczone. (I6d83c, b/296173018)

Wersja 1.6.1

26 lipca 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.1 została zwolniona. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem polegający na tym, że zapisany stan przechowywany, gdy aktywność została zatrzymana, ale nie zniszczona, był nieprawidłowo zapisywany w pamięci podręcznej nawet po przeniesieniu instancji fragmentu z powrotem do stanu RESUMED. Powoduje to ponowne użycie stanu z pamięci podręcznej, jeśli dana instancja fragmentu znajdowała się w tylnym stosie podczas zapisywania i przywracania danego fragmentu za pomocą interfejsu API wielu wstecznych stosów. (I71288, b/246289075)

Aktualizacja zależności

  • Fragment zależy teraz od aktywności 1.7.2. Rozwiązaliśmy problem, który powodował, że użytkownicy usługi Kotlin nie mogli przedłużyć ComponentDialog bez wyraźnego zależności od aktywności. (b/287509323)

Wersja 1.6.0

7 czerwca 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0 została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.5.0

  • Zapisany stan komponentów Fragment został całkowicie podzielony między stan biblioteki prywatnej (niestandardowe klasy Parcelable) i stan podany przez dewelopera, który jest teraz zawsze przechowywany w elemencie Bundle, który umożliwia dokładne określenie, skąd pochodzi stan fragmentu.
  • Interfejs FragmentManager.OnBackStackChangedListener został rozszerzony o 2 dodatkowe wywołania zwrotne onBackStackChangeStarted i onBackStackChangeCommitted, które są wywoływane z każdym elementem Fragment tuż przed ich dodaniem do stosu fragmentów lub z nim bezpośrednio po zatwierdzeniu transakcji.
  • Element FragmentStrictMode dodał nowy element WrongNestedHierarchyViolation, który wykrywa, że fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodawany do elementu childFragmentManager nadrzędnego.
  • Interfejsy API Fragment i FragmentManager, które biorą pod uwagę Intent lub IntentSender, są teraz prawidłowo oznaczone adnotacją @NonNull, aby zapobiec przekazywaniu wartości null w postaci wartości null, co zawsze powodowałoby awarię odpowiednich interfejsów API platformy Androida wywoływanych przez te metody.
  • DialogFragment zapewnia teraz dostęp do bazowego zasobu (ComponentDialog) za pomocą interfejsu API requireComponentDialog().
  • Fragment zależy teraz od cyklu życia 2.6.1.
  • Fragment zależy teraz od parametru SavedState 1.2.1.
  • Fragment zależy teraz od elementu ProfileInstaller 1.3.0.
  • Artefakt fragment-testing-manifest oddziela wpisy manifestu od pozostałych komponentów testowania fragmentów. Oznacza to, że możesz:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    Pozwala to uniknąć konfliktów z powodu odchylenia wersji między fragment-testing a androidx.test

Wersja 1.6.0-rc01

10 maja 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-rc01 została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że w przypadku kilku następujących po sobie żądań startActivityForResult wysyłane były żądania ActivityResult z nieprawidłowym kodem. (If0b9d, b/249519359)
  • Rozwiązaliśmy problem, który powodował, że wywołania zwrotne onBackStackChangeListener były wysyłane w przypadku transakcji, które tak naprawdę nie zmieniały stosu wstecznego, jeśli były wymieszane z transakcjami, które to robią. (I0eb5c, b/279306628)

Wersja 1.6.0-beta01

19 kwietnia 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-beta01 została zwolniona. Wersja 1.6.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Użycie właściwości postponeEnterTransition z limitem czasu, a następnie zastąpienie odłożonego fragmentu, nie skutkuje już wyciekiem odłożonego fragmentu. (I2ec7d, b/276375110)
  • Nowe wywołania zwrotne onBackStackChangeStarted i onBackStackChangeCommitted będą teraz wysyłać fragment tylko raz, nawet jeśli wiele transakcji zawiera ten sam fragment. (Ic6b69)

Wersja 1.6.0-alfa09

5 kwietnia 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha09 została zwolniona. Wersja 1.6.0-alpha09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • DialogFragment zapewnia teraz dostęp do bazowego zasobu (ComponentDialog) za pomocą interfejsu API requireComponentDialog(). (I022e3, b/234274777)
  • Interfejsy commitNow(), executePendingTransactions() i popBackStackImmediate() interfejsy API zostały oznaczone adnotacją z tekstem @MainThread, co oznacza, że teraz wszystkie będą zwracać błędy kompilacji, gdy nie zostaną wywołane z wątku głównego, zamiast czekać na błąd w czasie działania. (Ic9665, b/236538905)

Poprawki błędów

  • Naprawiliśmy błąd w FragmentManager, który powodował, że zapisanie i przywracanie w tej samej ramce mogło powodować awarię. (Ib36af, b/246519668)
  • Wywołania zwrotne OnBackStackChangedListener onBackStackChangeStarted i onBackStackChangeCommitted są teraz wykonywane tylko po zmianie stosu wstecznego FragmentManager. (I66055, b/274788957)

Wersja 1.6.0-alfa08

22 marca 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha08 została zwolniona. Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.

Zmiana w działaniu

  • Czas wywołania zwrotnego OnBackStackChangedListener.onBackStackChangeCommited został dostosowany do wykonania przed wykonaniem operacji na fragmencie. Dzięki temu wywołanie zwrotne nie będzie nigdy przekazywane do odłączonego fragmentu. (I66a76, b/273568280)

Poprawki błędów

  • Z fragmentu 1.5.6: naprawiliśmy błąd polegający na tym, że wywołanie metody clearFragmentResultListener w elemencie setFragmentResultListener nie działało, jeśli wartość Lifecycle miała już wartość STARTED, a wynik był już dostępny. (If7458)

Aktualizacje zależności

Wersja 1.6.0-alfa07

8 marca 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha07 została zwolniona. Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.

Poprawki błędów

  • Z fragmentu 1.5.6: usunięto problem polegający na tym, że usunięcie dowolnego fragmentu kodu, niezależnie od tego, czy dodało do niego pozycje menu, skutkowało unieważnieniem menu aktywności. (50f098, b/244336571)

Wersja 1.6.0-alfa06

22 lutego 2023 roku

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha06 została zwolniona. Wersja 1.6.0-alpha06 zawiera te zatwierdzenia.

Zmiana działania

  • Nowe wywołanie zwrotne onBackStackChangedStarted w tabeli onBackStackChangedListener serwera FragmentManager będzie teraz wykonywane, zanim fragmenty zaczną być przenoszone do stanów docelowych. (I34726)

Wersja 1.6.0-alfa05

8 lutego 2023 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha05 została zwolniona. Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Interfejs FragmentManager.OnBackStackChagnedListener udostępnia teraz 2 dodatkowe wywołania zwrotne onBackStackChangeStarted i onBackStackChangeCommitted, które umożliwiają przekazanie dodatkowych informacji i kontrolę, kiedy w usłudze FragmentManager zachodzą zmiany stosu wstecznej. (Ib7ce5, b/238686802)

Zmiany w interfejsie API

  • Interfejsy API Fragment i FragmentManager, które przyjmują wartości Intent lub IntentSender, są teraz prawidłowo oznaczone adnotacją @NonNull, aby zapobiec przekazywaniu wartości null w postaci wartości null, co zawsze powodowałoby awarię odpowiednich interfejsów API platformy Androida wywoływanych przez te metody. (I06fd4)

Wersja 1.6.0-alfa04

7 grudnia 2022 r.

Aplikacja androidx.fragment:fragment-*:1.6.0-alpha04 została zwolniona. Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Element FragmentStrictMode dodał nowy element WrongNestedHierarchyViolation, który wykrywa, że fragment podrzędny jest zagnieżdżony w hierarchii widoków elementu nadrzędnego, ale nie jest dodawany do elementu childFragmentManager nadrzędnego. (I72521, b/249299268)

Zmiany w działaniu

  • Fragmenty przywracają teraz stan SavedStateRegistry przed onAttach(), co zapewnia, że jest on dostępny we wszystkich metodach cyklu życia. (I1e2b1).

Zmiany w interfejsie API

  • Artefakt fragment-testing-manifest oddziela wpisy manifestu od pozostałych komponentów testowania fragmentów. Oznacza to, że możesz:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

Pozwala to uniknąć konfliktów z powodu odchylenia wersji między fragment-testing a androidx.test.(I8e534, b/128612536)

Poprawki błędów

  • Z fragmentu 1.5.5: fragmenty kodu nie będą już nieprawidłowo zapisywać stanu ViewModel w ramach zapisanego stanu rejestru widoków. (I10d2b, b/253546214)

Wersja 1.6.0-alfa03

5 października 2022 r.

Opublikowano androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 i androidx.fragment:fragment-testing:1.6.0-alpha03. Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zajęcia, które zostaną rozszerzone o DialogFragment, będą teraz musiały wywoływać funkcje Super w swoich zastąpieniach onDismiss(). (I14798, b/238928865)

Poprawki błędów

  • Usunięto regresje powodowane przez integrację nowych interfejsów wywołania zwrotnego dostawcy (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider), aby fragmenty zawsze otrzymywały odpowiednie wywołania zwrotne. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

Wersja 1.6.0-alfa02

24 sierpnia 2022 r.

Opublikowano androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 i androidx.fragment:fragment-testing:1.6.0-alpha02. Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.

Poprawki błędów

  • Z fragmentu 1.5.2: naprawiliśmy problem polegający na tym, że jednoczesne wykonanie transakcji popBackStack() i replace() mogło powodować nieprawidłowe uruchamianie fragmentów na wyjściu Animation/Animator. (Ib1c07, b/214835303)

Wersja 1.6.0-alfa01

27 lipca 2022 roku

Opublikowano androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 i androidx.fragment:fragment-testing:1.6.0-alpha01. Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.

Zmiany w działaniu

  • Zapisany stan komponentów Fragment został całkowicie podzielony między stan biblioteki prywatnej (niestandardowe klasy Parcelable) i stan podany przez dewelopera, który jest teraz zawsze przechowywany w elemencie Bundle, który umożliwia dokładne określenie, skąd pochodzi stan fragmentu. (b/207158202)

Poprawki błędów

  • Z fragmentu 1.5.1: popraw regresję w DialogFragmentCallbacksDetector, gdzie użycie wersji linta dołączonej do AGP 7.4 spowodowałoby awarię lintowania. (b/237567009)

Aktualizacja zależności

Wersja 1.5

Wersja 1.5.7

19 kwietnia 2023 r.

Opublikowano androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 i androidx.fragment:fragment-testing:1.5.7. Wersja 1.5.7 zawiera te zatwierdzenia.

Poprawki błędów

  • Użycie właściwości postponeEnterTransition z limitem czasu, a następnie zastąpienie odłożonego fragmentu, nie skutkuje już wyciekiem odłożonego fragmentu. (I2ec7d, b/276375110)

Wersja 1.5.6

22 marca 2023 r.

Opublikowano androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 i androidx.fragment:fragment-testing:1.5.6. Wersja 1.5.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem, który powodował, że usunięcie dowolnego fragmentu kodu, niezależnie od tego, czy dodało do niego pozycje menu, czy nie, unieważniło menu aktywności. (50f098, b/244336571)
  • Rozwiązaliśmy problem, który powodował, że wywołanie metody clearFragmentResultListener w obiekcie setFragmentResultListener nie działało, jeśli Lifecycle miał już wartość STARTED, a wynik był już dostępny. (If7458)

Wersja 1.5.5

7 grudnia 2022 r.

Opublikowano androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 i androidx.fragment:fragment-testing:1.5.5. Wersja 1.5.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Fragmenty nie będą już nieprawidłowo zapisywać stanu ViewModel w ramach zapisanego stanu rejestru widoków. (I10d2b, b/253546214)

Wersja 1.5.4

24 października 2022 r.

Opublikowano androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 i androidx.fragment:fragment-testing:1.5.4. Wersja 1.5.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że użycie niestandardowego atrybutu FragmentController z hostem, który nie implementuje interfejsu wywołania zwrotnego dostawcy (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) i wywołanie wycofanej funkcji wysyłania, powodowało wysłanie wiadomości do fragmentów podrzędnych. (I9b380)

Wersja 1.5.3

21 września 2022 r.

Opublikowano androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 i androidx.fragment:fragment-testing:1.5.3. Wersja 1.5.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że fragmenty w stosie wstecznym zwracały wywołania zwrotne onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() i onConfigurationChanged(). (I34581, I8dfe6, b/242570955)
  • Zagnieżdżone fragmenty podrzędne nie będą już otrzymywać wielu wywołań zwrotnych onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() ani onConfigurationChanged(). (I690b3, Id0096, If9d6b, I2cba2)

Wersja 1.5.2

10 sierpnia 2022 r.

Opublikowano androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 i androidx.fragment:fragment-testing:1.5.2. Wersja 1.5.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że jednoczesne wykonywanie transakcji popBackStack() i replace() mogło powodować nieprawidłowe uruchamianie fragmentów Animation/Animator (Ib1c07, b/214835303).

Wersja 1.5.1

27 lipca 2022 roku

Opublikowano androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 i androidx.fragment:fragment-testing:1.5.1. Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Popraw w DialogFragmentCallbacksDetector błąd regresji, w którym użycie wersji lint w pakiecie AGP 7.4 spowodowałoby awarię lintowania. (b/237567009)

Aktualizacja zależności

Wersja 1.5.0

29 czerwca 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 i androidx.fragment:fragment-testing:1.5.0. Wersja 1.5.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.4.0

  • Integracja dodatku do tworzeniaFragment ma teraz możliwość dostarczania bezstanowego elementu ViewModelProvider.Factory za pomocą funkcji CreationExtras w cyklu życia 2.5.0.
  • Integracja okna komponentówDialogFragment używa teraz ComponentDialog za pośrednictwem Aktywności 1.5.0 jako domyślnego okna zwracanego przez onCreateDialog().
  • Refaktoryzacja zapisanego stanu instancji – zaczęła się zmieniać sposób zapisywania stanu instancji za pomocą fragmentów kodu. Celem jest ułatwienie wyraźnej identyfikacji stanu zapisanego we fragmencie i źródle stanu. Obecne zmiany:
    • FragmentManager zapisuje teraz stan zapisanej instancji w formacie Bundle, a nie bezpośrednio w niestandardowym Parcelable.
    • Wyniki ustawiane za pomocą Fragment Result APIs, które nie zostały jeszcze dostarczone, są teraz zapisywane niezależnie od stanu wewnętrznego FragmentManager.
    • Stan powiązany z poszczególnymi fragmentami jest teraz zapisywany niezależnie od stanu wewnętrznego zasobu FragmentManager, co pozwala skorelować ilość zapisanego stanu powiązanego z poszczególnymi fragmentami z unikalnymi identyfikatorami w dzienniku debugowania Fragment.

Inne zmiany

  • FragmentStrictMode umożliwia teraz używanie prywatnych fragmentów kodu spoza witryny przez użycie allowViolation() z nazwą klasy w celu ominięcia konkretnych kar za naruszenie zasad.
  • Interfejsy Fragment API służące do udostępniania menu w sekcji ActionBar Twojej aktywności zostały wycofane. Interfejsy API MenuHost i MenuProvider dodane w aktywności 1.4.0 zapewniają testową, równoważną powierzchnię interfejsu API, z której powinny korzystać fragmenty.

Wersja 1.5.0-rc01

11 maja 2022 roku

Opublikowano androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 i androidx.fragment:fragment-testing:1.5.0-rc01. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.

Refaktoryzacja zapisanego stanu instancji

  • Stan powiązany z poszczególnymi fragmentami jest teraz zapisywany niezależnie od stanu wewnętrznego FragmentManager, co pozwala skorelować ilość zapisanego stanu powiązanego z poszczególnymi fragmentami z unikalnymi identyfikatorami w logowaniu debugowania fragmentu. (A153e0, b/207158202)

Wersja 1.5.0-beta01

20 kwietnia 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 i androidx.fragment:fragment-testing:1.5.0-beta01. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • DialogFragment dodał(a) nową metodę dismissNow, która używa commitNow do zapewnienia zgodności z funkcją showNow. Pamiętaj, że nie spowoduje to zamknięcia interfejsu Dialog od razu, a jedynie synchronicznie zaktualizuje stan obiektu FragmentManager. (I15c36, b/72644830)

Refaktoryzacja zapisanego stanu instancji

  • FragmentManager zapisuje teraz stan zapisanej instancji w formacie Bundle, a nie bezpośrednio w niestandardowym Parcelable. Jest to pierwszy krok na drodze do zapewnienia większej przejrzystości tego, co rzeczywiście jest zapisywane przez fragmenty kodu. (I93807, b/207158202)
  • Wyniki ustawione za pomocą interfejsów API wyników z fragmentem, które nie zostały jeszcze dostarczone, są teraz zapisywane oddzielnie od stanu wewnętrznego FragmentManager. Dzięki temu uzyskasz lepszy wgląd w to, jakie wyniki są zapisywane w ramach zapisanego stanu instancji. (I6ea12, b/207158202)

Wersja 1.5.0-alfa05

6 kwietnia 2022 roku

Opublikowano androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 i androidx.fragment:fragment-testing:1.5.0-alpha05. Wersja 1.5.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Wersja 1.5.0-alfa04

23 marca 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 i androidx.fragment:fragment-testing:1.5.0-alpha04. Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wycofaliśmy interfejsy API Fragment do udostępniania menu funkcji ActionBar Twojej aktywności, ponieważ ściśle łączą Twój fragment z aktywnością i nie można ich testować w oderwaniu. Interfejsy API MenuHost i MenuProvider dodane w aktywności 1.4.0-alpha01 zapewniają testową, równoważną powierzchnię interfejsu API, z której powinny korzystać fragmenty. (I50a59, I20758)

Poprawki błędów

  • SavedStateViewFactory obsługuje teraz użycie CreationExtras, nawet jeśli zainicjowano go za pomocą SavedStateRegistryOwner. W przypadku podania dodatków zainicjowane argumenty są ignorowane. (I6c43b, b/224844583)

Wersja 1.5.0-alfa03

23 lutego 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 i androidx.fragment:fragment-testing:1.5.0-alpha03. Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Możesz teraz przekazywać CreationExtras do funkcji by viewModels() i by activityViewModels(). (Ibefe7, b/217601110)

Zmiany w działaniu

Wersja 1.5.0-alfa02

9 lutego 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 i androidx.fragment:fragment-testing:1.5.0-alpha02. Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • FragmentStrictMode umożliwia teraz używanie prywatnych fragmentów kodu spoza witryny przez użycie allowViolation() z nazwą klasy w celu ominięcia konkretnych kar za naruszenie zasad. (I8f678)

Wersja 1.5.0-alfa01

26 stycznia 2022 r.

Opublikowano androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 i androidx.fragment:fragment-testing:1.5.0-alpha01. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

Poprawki błędów

  • Z fragmentu 1.4.1: FragmentContainerView nie zgłasza już niedozwolonego wyjątku stanu, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140)
  • Z fragmentu 1.4.1: podczas używania niestandardowej lambda ownerProducer z leniwą funkcją by viewModels() będzie ona teraz używała defaultViewModelProviderFactory od tego właściciela, jeśli nie podano niestandardowej wartości ViewModelProvider.Factory zamiast zawsze używać fabryki fragmentu. (I56170, b/214106513)
  • Rozwiązaliśmy problem, który powodował awarię podczas uzyskiwania dostępu do interfejsu ViewModel po raz pierwszy z wywołania zwrotnego registerForActivityResult() Fragment. (Iea2b3).

Wersja 1.4

Wersja 1.4.1

26 stycznia 2022 r.

Opublikowano androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 i androidx.fragment:fragment-testing:1.4.1. Wersja 1.4.1 zawiera te zatwierdzenia.

Poprawki błędów

  • FragmentContainerView nie zgłasza już wyjątku niezgodnego z prawem, gdy identyfikatory widoków wygenerowane z pliku XML mają wartości ujemne. (Ic185b, b/213086140)
  • Podczas używania niestandardowej lambda ownerProducer z funkcją leniwego by viewModels() będzie ona teraz używała wartości defaultViewModelProviderFactory od tego właściciela, jeśli nie podano niestandardowej wartości ViewModelProvider.Factory, a nie zawsze używa fabryki fragmentu. (I56170, b/214106513)

Wersja 1.4.0

17 listopada 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 i androidx.fragment:fragment-testing:1.4.0. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

  • Interfejsy API FragmentStrictMode udostępniają testy środowiska wykonawczego, które umożliwiają sprawdzenie, czy aplikacja lub biblioteki, z których korzystasz, nie wywołują wycofanych interfejsów API fragmentów. Po wykryciu naruszenia możesz wydrukować komunikat dziennika, uruchomić własny detektor lub zawiesić aplikację. Element FragmentStrictMode.Policy określający, które kontrole są włączone i karane, można ustawić w FragmentManager za pomocą nowej metody setStrictModePolicy(). Ta zasada obowiązuje w odniesieniu do FragmentManager i przechodnie do wszystkich menedżerów fragmentów podrzędnych, którzy nie ustawili własnej, niepowtarzalnej zasady. Zobacz StrictMode dla fragmentów.
  • FragmentContainerView udostępnia teraz metodę getFragment(), która zwraca fragment, który został ostatnio dodany do kontenera. Wykorzystuje tę samą logikę co w przypadku findFragmentById() z identyfikatorem obiektu FragmentContainerView, ale umożliwia łańcuch wywołania.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario implementuje teraz Closeable, dzięki czemu możesz używać jej z metodą use Kotlina lub spróbować z zasobami.

  • Dodano FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}, aby określić, czy chcesz włączyć standardową animację przejścia aktywności pochodzącą z Twojego motywu w przejściu Fragmenty.

  • Eksperymentalny interfejs API FragmentManager.enableNewStateManager(boolean) został usunięty. Nowy menedżer stanu jest teraz jedyną dostępną opcją.

Wiele wstecznych stosów

FragmentManager utrzymuje stos wsteczny składający się z transakcji fragmentowych, które korzystały z addToBackStack(). Dzięki temu możesz podzielić te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu z fragmentami, co pozwala na odpowiednie przywrócenie stanu fragmentów.

Ta wersja rozszerza te mechanizmy, dodając 3 nowe interfejsy API FragmentManager: saveBackStack(String name), restoreBackStack(String name) i clearBackStack(String name). Te interfejsy API używają tego samego parametru name co addToBackStack(), aby zapisywać stan FragmentTransaction i stan każdego fragmentu dodanego w tych transakcjach. Pozwalają one później przywrócić te transakcje i ich fragmenty z niezmienionym stanem. Dzięki temu można skutecznie „przełączać się” między wieloma stosami wstecznymi, zapisując bieżący stos i przywracając zapisany.

Funkcja saveBackStack() działa podobnie do popBackStack() pod tym względem, że jest asynchroniczna i powoduje cofnięcie wszystkich transakcji powiązanych z danym fragmentem („popped”) oraz wszelkie dodane fragmenty do zniszczenia i usunięcia. Różnią się jednak kilkoma istotnymi cechami:

  • saveBackStack() uwzględnia zawsze.
  • W odróżnieniu od metody popBackStack(), która powoduje wyskakiwanie wszystkich transakcji w stosie wstecznym, jeśli podanej nazwy nie ma w tylnym stosie lub jeśli podana jest nazwa null, saveBackStack() nie robi wcześniej, jeśli nie została wcześniej zatwierdzona transakcja obejmująca fragment przy użyciu addToBackStack() o takiej samej, niepustej nazwie.
  • Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że przechowywany jest stan widoku każdego fragmentu, wywoływany jest onSaveInstanceState() każdego fragmentu i ten stan zostaje przywrócony, a wszystkie wystąpienia ViewModel powiązane z tymi fragmentami są zachowywane (a pole onCleared() nie jest do nich wywoływane).

Transakcje związane z fragmentami, których można użyć z elementem saveBackStack(), muszą spełniać określone kryteria:

  • Każda transakcja dotycząca fragmentu musi korzystać z metody setReorderingAllowed(true), aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację.
  • Zapisane transakcje muszą być niezależne (tj. nie mogą jednoznacznie odwoływać się do fragmentów spoza tego zbioru transakcji), aby można było je później przywrócić, niezależnie od tego, jakie zmiany zostały wprowadzone w stosie wstecznym w danym okresie.
  • Żaden zapisany fragment nie może być fragmentem przechowywanym lub zachowanym w przechodnim zestawie fragmentów podrzędnych, aby zapewnić, że FragmentManager nie zwróci żadnych odwołań do zapisanych fragmentów po zapisaniu stosu wstecznego.

Podobnie jak w przypadku funkcji saveBackStack(), restoreBackStack() i clearBackStack(), które przywracają wcześniej zapisany stos wsteczny lub usuwają wcześniej zapisany stos wsteczny, nie działają, jeśli nie wywołano wcześniej funkcji saveBackStack() o tej samej nazwie.

Więcej informacji znajdziesz w artykule Wiele wstecznych stosów: szczegółowa analiza.

Wersja 1.4.0-rc01

3 listopada 2021 r.

Wersja androidx.fragment:fragment:1.4.0-rc01 została zwolniona bez zmian z fragmentu 1.4.0-beta01. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Wersja 1.4.0-beta01

27 października 2021 roku

Opublikowano androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 i androidx.fragment:fragment-testing:1.4.0-beta01. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Fragmenty nadrzędne będą teraz wysyłać kod onHiddenChanged() w dół całej hierarchii przed uruchomieniem własnego wywołania zwrotnego. (Iedc20, b/77504618)
  • Klawiatura zamknie się automatycznie przy przechodzeniu z fragmentu z otwartą klawiaturą do fragmentu z widokiem RecyclerView. (I8b842, b/196852211)
  • DialogFragment używa teraz pola setReorderingAllowed(true) we wszystkich transakcjach, które tworzy przy wywołaniu metody show(), showNow() lub dismiss(). (Ie2c14).
  • Bardzo długie ostrzeżenie lint dla DetachAndAttachFragmentInSameFragmentTransaction zostało skrócone do DetachAndAttachSameFragment. (E9eca3)

Wersja 1.4.0-alfa10

29 września 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 i androidx.fragment:fragment-testing:1.4.0-alpha10. Wersja 1.4.0-alpha10 zawiera te zatwierdzenia.

Lint

  • Dodano ostrzeżenie o linie w DetachAndAttachFragmentInSameFragmentTransaction przy wykrywaniu wywołań zarówno detach(), jak i attach() w tym samym elemencie Fragment w tym samym elemencie: FragmentTransaction. Operacje uzupełniające anulują się wzajemnie w ramach tej samej transakcji, dlatego muszą zostać podzielone na osobne transakcje, aby w ogóle nie działały. (Aosp/1832956, b/200867930)
  • Dodano błąd linta FragmentAddMenuProvider do poprawiania przypadków użycia cyklu życia fragmentu w widoku cyklu życia fragmentu podczas korzystania z interfejsu API addMenuProvider dla MenuHost. (Aosp/1830457, b/200326272)

Aktualizacje dokumentacji

  • Komunikat o wycofaniu interfejsów API jest teraz obsługiwany przez interfejsy API wyników związane z aktywnością (startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions i onRequestPermissionsResult) i zawiera więcej szczegółów. (CCE80F)
  • Komunikat o wycofaniu onActivityCreated() w przypadku usług Fragment i DialogFragment został rozszerzony i zawiera więcej szczegółów. (224db4)

Wersja 1.4.0-alfa09

15 września 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 i androidx.fragment:fragment-testing:1.4.0-alpha09. Wersja 1.4.0-alpha09 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz wywołać clearBackStack(name), aby wyczyścić każdy stan, który został wcześniej zapisany w saveBackStack(name). (I70cd7)

Zmiany w interfejsie API

  • Klasa FragmentContainerView została przepisana w Kotlin w celu zapewnienia, że funkcja getFragment prawidłowo przestrzega wartości null. (If694a, b/189629145)
  • Fragment FragmentStrictMode jest teraz zapisany w języku Kotlin (I11767, b/199183506).

Poprawki błędów

  • Naprawiliśmy błąd polegający na tym, że stan fragmentu dodanego za pomocą setReorderingAllowed(true), a następnie usunięty bezpośrednio przed wykonaniem oczekujących transakcji, nie był prawidłowo czyszczony. (I8ccb8)

Wersja 1.4.0-alfa08

1 września 2021 roku

Opublikowano androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 i androidx.fragment:fragment-testing:1.4.0-alpha08. Wersja 1.4.0-alpha08 zawiera te zatwierdzenia.

Poprawki błędów

  • Ulepszyliśmy funkcję sprawdzania lint UseRequireInsteadOfGet, aby lepiej obsługiwać nadmiarowe nawiasy. (I2D865)
  • Ulepszyliśmy sprawdzanie lint UseGetLayoutInflater, aby obsługiwać dodatkowe przypadki skrajne. (Ie5423)

Wersja 1.4.0-alfa07

18 sierpnia 2021 r.

Wersje androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 i androidx.fragment:fragment-testing:1.4.0-alpha07 zostały opublikowane bez istotnych zmian. Wersja 1.4.0-alpha07 zawiera te zatwierdzenia.

Wersja 1.4.0-alfa06

4 sierpnia 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 i androidx.fragment:fragment-testing:1.4.0-alpha06. Wersja 1.4.0-alpha06 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z wieloma warstwami wstecznymi występującymi w przypadku szybkiego przełączania się między stosami wstecznymi, który był wyświetlany jako IllegalStateException podczas przywracania FragmentTransaction lub jako drugiej kopii widocznego fragmentu. (I9039f)
  • Rozwiązaliśmy problem, który powodował, że FragmentManager zachowywał kopię stanu wcześniej zapisanego za pomocą saveBackStack() nawet po przywróceniu tego stanu. (Ied212)
  • Metoda dismissAllowingStateLoss() DialogFragment nie ulega już awarii, gdy wywołujesz ją po zapisaniu stanu podczas dodawania DialogFragment za pomocą metody show(FragmentTransaction, String). (I84422)

Wersja 1.4.0-alfa05

21 lipca 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 i androidx.fragment:fragment-testing:1.4.0-alpha05. Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.

Poprawki błędów

  • Z fragmentu 1.3.6: widok fragmentu jest teraz prawidłowo ustawiony na GONE przy korzystaniu z elementu hide(), gdy widok główny ma ustawiony widok transitionGroup=”true”. (Aosp/1766655, b/193603427)
  • Z fragmentu 1.3.6: FragmentActivity zawsze odblokowuje zapisany stan, ponieważ jego pierwsza operacja w cyklu życia zastępuje wywołanie zwrotne. (I6db7a)

Aktualizacja zależności

Wersja 1.4.0-alfa04

30 czerwca 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 i androidx.fragment:fragment-testing:1.4.0-alpha04. Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Aby zapisać swój stan, FragmentManager używa teraz trybu SavedStateRegistry pod maską. Metody saveAllState() i restoreSavedState() również zostały wycofane w FragmentController. Jeśli używasz metody FragmentController do hostowania fragmentów poza FragmentActivity, musisz mieć implementację FragmentHostCallbacks SavedStateRegistryOwner. (Iba68e, b/188734238)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że wywołanie saveBackStack() w ramach obsługi wielu stosów wstecznych kończyło się niepowodzeniem, gdy było wykonywane w tym samym czasie co wywołanie FragmentTransaction, które używało replace(). (I73137)
  • Poprawiliśmy błąd NullPointerException, który występował po ręcznym przywróceniu zapisanego stosu wstecznego, który zawierał wiele transakcji, w przypadku korzystania z interfejsu API restoreBackStack() do obsługi wielu stosu wstecznych. Naprawiliśmy też błąd, który powodował, że funkcja setReorderingAllowed(true) nie była sprawdzana pod kątem wszystkich transakcji. (I8c593)
  • Naprawiono błąd polegający na tym, że FragmentManager nieprawidłowo w dalszym ciągu przywracał zapisany wcześniej stan fragmentów nawet po usunięciu tych fragmentów z FragmentManager, przez co zapisany stan stale zwiększał się z czasem. (I1fb8e)

Wersja 1.4.0-alfa03

16 czerwca 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 i androidx.fragment:fragment-testing:1.4.0-alpha03. Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.

Nowe funkcje

  • Wszystkie klasy Fragment StrictMode Violation zostały zaktualizowane o bardziej szczegółowe komunikaty o błędach, które wyjaśniają szczegóły naruszenia. (b/187871638)
    • FragmentTagUsageViolation zawiera teraz bardziej szczegółowy komunikat o błędzie dotyczący kontenera nadrzędnego, do którego zostałby dodany dany fragment. (Ic33a7)
    • WrongFragmentContainerViolation zawiera teraz bardziej szczegółowy komunikat o błędzie obejmujący kontener, do którego został dodany dany fragment. (Ib55f8)
    • Klasy przypadku użycia klasy TargetFragmentUsageViolation mają teraz bardziej szczegółowe komunikaty o błędach, aby uwzględnić fragment powodujący naruszenie i wszelkie inne zawarte informacje. (Icc6ac)
    • Klasy rozszerzające zakres RetainInstanceUsageViolation mają teraz bardziej szczegółowe komunikaty o błędach, które zawierają fragment powodujący naruszenie. (I6bd55)
    • FragmentReuseViolation zawiera teraz bardziej szczegółowy komunikat o błędzie zawierający poprzedni identyfikator fragmentu. (I28ce2)
    • W SetUserVisibleHintViolation można teraz zobaczyć bardziej szczegółowy komunikat o błędzie, który zawiera informację o tym, jak była ustawiona wskazówka dla użytkownika. (Ib2d5f)

Zmiany w działaniu

  • Cofnięto ograniczenie dotyczące dzwonienia pod numer fitsSystemWindows na urządzeniu FragmentContainerView – nie powoduje to już awarii aplikacji. (6b8ddd, b/190622202)

Poprawki błędów

  • Z fragmentu 1.3.5: naprawiono regresję w przejściach elementów udostępnionych w Fragmentie 1.3.4 przez aosp/1679887. Fragmenty prawidłowo teraz obsługują grupy przejść (ustawione bezpośrednio przez transitionGroup="true" lub pośrednio przez transitionName lub background), a udostępnione elementy nie będą już generować żądań IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
  • Gdy spróbujesz ukryć usuwany fragment, FragmentManager nie będzie już ulegać awarii. (I573dd, b/183634730)
  • Podczas oceny zmiennej najwyższego poziomu kontrola lintowania OnCreateDialogIncorrectCallback nie będzie już powodowała awarii. (0a9efa, b/189967522)

Wersja 1.4.0-alfa02

2 czerwca 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 i androidx.fragment:fragment-testing:1.4.0-alpha02. Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Gdy logowanie jest włączone w interfejsie FragmentManager, FragmentStrictMode zawsze będzie rejestrować naruszenia, niezależnie od bieżącej zasady trybu ścisłego. (I02df6, b/187872638)
  • FragmentStrictMode umożliwia teraz wykluczenie określonych klas Fragment z trybu ścisłego Violation, co pozwala im pominąć wszelkie kary. (Ib4e5d, b/184786736)

  • Klasa FragmentStrictMode Violation została powiększona o informacje o strukturze na podstawie poszczególnych naruszeń. Dzięki temu możesz sprawdzić, co dokładnie spowodowało naruszenie, oraz sprawdzić fragment naruszający zasady (If5118, b/187871150), każdy element Violation zawiera:

    • WrongFragmentContainerViolation zawiera teraz element ViewGroup, do którego próbowano dodać element Fragment. (I83c75, b/187871150)
    • TargetFragmentUsageViolation został rozszerzony do SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation i GetTargetFragmentRequestCodeUsageViolation, gdzie SetTargetFragmentUsageViolation zawiera fragment docelowy i kod żądania. (I741b4, b/187871150)
    • SetUserVisibleHintViolation zawiera teraz wartość logiczną przekazaną do funkcji setUserVisibleHint(). (I00585, b/187871150)
    • FragmentTagUsageViolation zawiera teraz grupę widoków, do której tag <fragment> próbował powiększyć fragment.(I5dbbc, b/187871150)
    • FragmentReuseViolation zawiera teraz unikalny identyfikator poprzedniego wystąpienia klasy Fragment, które spowodowało naruszenie zasad. (I0544d, b/187871150)
    • Typ naruszenia RetainInstanceUsageViolation jest teraz abstrakcyjny i obejmuje 2 podklasy: SetRetainInstanceUsageViolation i GetRetainInstanceUsageViolation, które reprezentują 2 przypadki naruszenia typu naruszenia. (Ic81e5, b/187871150)

Zmiany w działaniu

  • FragmentContainerView zgłasza teraz wyjątek podczas próby zmiany atrybutu fitsSystemWindow automatycznie lub za pomocą kodu XML. Wstawki powinny być obsługiwane przez widok poszczególnych fragmentów. (Ie6651, b/187304502)

Wersja 1.4.0-alfa01

18 maja 2021 r.

Opublikowano androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 i androidx.fragment:fragment-testing:1.4.0-alpha01. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • FragmentContainerView udostępnia teraz metodę getFragment(), która zwraca fragment, który został ostatnio dodany do kontenera. Wykorzystuje tę samą logikę co w przypadku findFragmentById() z identyfikatorem obiektu FragmentContainerView, ale umożliwia łańcuch wywołania. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Dodano FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}, aby określić, czy chcesz włączyć standardową animację przejścia aktywności pochodzącą z Twojego motywu w przejściu Fragmenty. (I46652)

Wiele wstecznych stosów

FragmentManager utrzymuje stos wsteczny składający się z transakcji fragmentowych, które korzystały z addToBackStack(). Dzięki temu możesz podzielić te transakcje i wrócić do poprzedniego stanu, korzystając z mechanizmów zapisywania stanu z fragmentami, co pozwala na odpowiednie przywrócenie stanu fragmentów.

Ta wersja rozszerza te mechanizmy, dodając 2 nowe interfejsy API FragmentManager: saveBackStack(String name) i restoreBackStack(String name). Te interfejsy API używają tego samego parametru name co addToBackStack(), aby zapisywać stan FragmentTransaction i stan każdego fragmentu dodanego w tych transakcjach. Pozwalają one później przywrócić te transakcje i ich fragmenty z niezmienionym stanem. Dzięki temu można skutecznie „przełączać się” między wieloma stosami wstecznymi, zapisując bieżący stos i przywracając zapisany.

Funkcja saveBackStack() działa podobnie do popBackStack() pod tym względem, że jest asynchroniczna i powoduje cofnięcie wszystkich transakcji powiązanych z danym fragmentem („popped”) oraz wszelkie dodane fragmenty do zniszczenia i usunięcia. Różnią się jednak kilkoma istotnymi cechami:

  • saveBackStack() uwzględnia zawsze.
  • W odróżnieniu od metody popBackStack(), która powoduje wyskakiwanie wszystkich transakcji w stosie wstecznym, jeśli podanej nazwy nie ma w tylnym stosie lub jeśli podana jest nazwa null, saveBackStack() nie robi wcześniej, jeśli nie została wcześniej zatwierdzona transakcja obejmująca fragment przy użyciu addToBackStack() o takiej samej, niepustej nazwie.
  • Stan wszystkich fragmentów dodanych z tych transakcji jest zapisywany. Oznacza to, że przechowywany jest stan widoku każdego fragmentu, wywoływany jest onSaveInstanceState() każdego fragmentu i ten stan zostaje przywrócony, a wszystkie wystąpienia ViewModel powiązane z tymi fragmentami są zachowywane (a pole onCleared() nie jest do nich wywoływane).

Transakcje związane z fragmentami, których można użyć z elementem saveBackStack(), muszą spełniać określone kryteria:

  • Każda transakcja dotycząca fragmentu musi korzystać z metody setReorderingAllowed(true), aby można było przywrócić transakcje jako pojedynczą, niepodzielną operację.
  • Zapisane transakcje muszą być niezależne (tj. nie mogą jednoznacznie odwoływać się do fragmentów spoza tego zbioru transakcji), aby można było je później przywrócić, niezależnie od tego, jakie zmiany zostały wprowadzone w stosie wstecznym w danym okresie.
  • Żaden zapisany fragment nie może być fragmentem przechowywanym lub zachowanym w przechodnim zestawie fragmentów podrzędnych, aby zapewnić, że FragmentManager nie zwróci żadnych odwołań do zapisanych fragmentów po zapisaniu stosu wstecznego.

Podobnie jak saveBackStack(), restoreBackStack() nie działa, jeśli funkcja saveBackStack() nie została wcześniej wywołana o tej samej nazwie. (b/80029773)

Fragment StrictMode

Interfejsy API FragmentStrictMode udostępniają testy środowiska wykonawczego, które umożliwiają sprawdzenie, czy aplikacja lub biblioteki, z których korzystasz, nie wywołują wycofanych interfejsów API fragmentów. Po wykryciu naruszenia możesz wydrukować komunikat dziennika, uruchomić własny detektor lub zawiesić aplikację. Element FragmentStrictMode.Policy określający, które kontrole są włączone i karane, można ustawić w FragmentManager za pomocą nowej metody setStrictModePolicy(). Ta zasada obowiązuje w odniesieniu do FragmentManager i przechodnie do wszystkich menedżerów fragmentów podrzędnych, którzy nie ustawili własnej, niepowtarzalnej zasady. (#123, #131, #150, b/143774122)

  • detectFragmentReuse() wykrywa, czy usunięta wcześniej instancja Fragment jest ponownie dodawana do instancji FragmentManager. Po zniszczeniu instancji Fragment i usunięciu jej z instancji FragmentManager nie wolno nigdy korzystać z niej ani zachowywać odniesienia do niej. (#142, b/153738653)
  • detectFragmentTagUsage() wykrywa, kiedy używasz tagu <fragment> w kodzie XML układu. Gdy nadmiarujesz fragmenty w ramach układu, zawsze używaj polecenia FragmentContainerView. (#141, b/153738235)
  • detectWrongFragmentContainer() wykrywa, że do kontenera został dodany fragment, który nie jest elementem FragmentContainerView. Jako kontenera fragmentów w układzie należy zawsze używać narzędzia FragmentContainerView. (#146, b/181137036)
  • detectRetainInstanceUsage() wykrywa, kiedy używasz wycofanych interfejsów API setRetainInstance() lub getRetainInstance(). (#140, b/153737954)
  • detectSetUserVisibleHint() wykrywa, kiedy używasz wycofanego interfejsu API setUserVisibleHint(). (#136, b/153738974)
  • detectTargetFragmentUsage() wykrywa, kiedy używasz wycofanych interfejsów API setTargetFragment(), getTargetFragment() lub getTargetRequestCode(). (#139, b/153737745)

Zmiany w interfejsie API

Nowe testy Lint

  • Sprawdzanie Lint (UseGetLayoutInflater) ostrzega, gdy używasz LayoutInflater.from(Context) w obrębie DialogFragment – aby uzyskać właściwą wartość LayoutInflater, zawsze używaj metody getLayoutInflater() fragmentu okna. (#156, b/170781346)
  • Sprawdzanie pod kątem Lint (DialogFragmentCallbacksDetector) ostrzega teraz, gdy wywołuje metodę setOnCancelListener lub setOnDismissListener w metodzie onCreateDialog() DialogFragment – odbiorniki są własnością samej instancji DialogFragment i aby otrzymywać te wywołania zwrotne, musisz zastąpić wartości onCancel() i onDismiss(). (#171, b/181780047, b/187524311)

Poprawki błędów

  • Od fragmentu 1.3.4: naprawiono regresję wprowadzona w Fragmentie 1.3.3 podczas korzystania z interfejsu API ViewTreeViewModelStoreOwner.get() z ViewModelProvider lub metody Jetpack Compose z viewModel() we fragmencie. Te przypadki użycia teraz prawidłowo korzystają z parametru ViewModelProvider.Factory podanego przez fragment kodu, jeśli zastępuje on getDefaultViewModelProviderFactory() (tak jak robią to fragmenty z adnotacjami @AndroidEntryPoint w przypadku korzystania z Hilt). Jeśli nie zastąpisz tej metody, SavedStateViewModelFactory, który zapisuje i przywraca swój stan obok widoku fragmentu, zostanie utworzony jako domyślna fabryka. (I5cbfa, b/186097368)
  • Z fragmentu 1.3.4: podczas korzystania z FragmentContainerView w interfejsie API 29 wstawienia nie będą wysyłane w nieskończoność, co rozwiąże problemy z instancjami BottomNavigationBar i FloatingActionButton. (I1bb78, b/186012452)
  • Z fragmentu 1.3.4: możesz teraz pobrać obiekt Parcelable z pakietu wyników fragmentów po śmierci procesu. (I65932, b/187443158)
  • Od fragmentu 1.3.4: podczas wykonywania przejścia elementu wspólnego w grupie widoków danych, a jego parametr transitionGroup ma wartość Fałsz, następuje teraz prawidłowo. (I99675)

Wkład z zewnątrz

Wersja 1.3

Wersja 1.3.6

21 lipca 2021 r.

Opublikowano androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 i androidx.fragment:fragment-testing:1.3.6. Wersja 1.3.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Z Fragmentu 1.4.0-alpha03: gdy spróbujesz ukryć usuwany fragment, FragmentManager nie będzie już ulegać awarii. (I573dd, b/183634730)
  • Widok fragmentu jest teraz prawidłowo ustawiony na GONE podczas korzystania z elementu hide(), gdy widok główny ma ustawiony parametr transitionGroup=”true”. (Aosp/1766655, b/193603427)
  • Obecnie FragmentActivity zawsze odblokowuje zapisany stan, ponieważ jego pierwsza operacja w cyklu życia powoduje zastąpienie go przez wywołania zwrotne. (I6db7a)

Aktualizacja zależności

Wersja 1.3.5

16 czerwca 2021 r.

Opublikowano androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 i androidx.fragment:fragment-testing:1.3.5. Wersja 1.3.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy regresję w przejściach elementów wspólnych wprowadzonych we Fragmentie 1.3.4 przez aosp/1679887. Fragmenty prawidłowo teraz obsługują grupy przejść (ustawione bezpośrednio przez transitionGroup="true" lub pośrednio przez transitionName lub background), a udostępnione elementy nie będą już generować żądań IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)

Wersja 1.3.4

18 maja 2021 r.

Opublikowano androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 i androidx.fragment:fragment-testing:1.3.4. Wersja 1.3.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono regresję wprowadzoną we fragmencie Fragment 1.3.3 podczas korzystania z interfejsu API ViewTreeViewModelStoreOwner.get() z elementem ViewModelProvider lub metody viewModel() w Jetpack wewnątrz fragmentu podczas korzystania z Hilt. Te przypadki użycia teraz prawidłowo używają polecenia ViewModelProvider.Factory dostarczonego przez fragment kodu, jeśli zastępuje on getDefaultViewModelProviderFactory() (tak jak robią to fragmenty z adnotacjami @AndroidEntryPoint). Jeśli nie zastąpisz tej metody, SavedStateViewModelFactory, który zapisuje i przywraca swój stan obok widoku fragmentu, zostanie utworzony jako domyślna fabryka. (I5cbfa, b/186097368)
  • Gdy używasz FragmentContainerView w interfejsie API 29, wstawki nie będą już wysyłane w nieskończoność, co rozwiąże problemy z instancjami BottomNavigationBar i FloatingActionButton. (I1bb78, b/186012452)
  • Możesz teraz pobrać interfejs Parcelable z pakietu wyników fragmentów po śmierci procesu. (I65932, b/187443158)
  • Jeśli podczas wykonywania przejścia elementu wspólnego w grupie widoków danych parametr transitionGroup ma wartość false (fałsz), przeniesienie zostanie zakończone poprawnie. (I99675)

Wersja 1.3.3

21 kwietnia 2021 r.

Opublikowano androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 i androidx.fragment:fragment-testing:1.3.3. Wersja 1.3.3 zawiera te zatwierdzenia.

Nowe funkcje

  • Użycie właściwości SavedStateViewModelFactory działa teraz w przypadku użycia z wartością SavedStateRegistryOwner zwracaną przez metodę ViewTreeSavedStateRegistryOwner.get() w widoku fragmentu. (I21acf, b/181577191)

Poprawki błędów

  • Naprawiliśmy regresję wprowadzoną we fragmentie 1.3.2, która powodowała, że animacje popEnter nie były uruchamiane podczas wywoływania funkcji FragmentTransaction zawierającej operację setPrimaryNavFragment, taką jak te używane przez NavHostFragment. (I38c87, b/183877426)
  • FragmentContainerView teraz gwarantuje, że każdy element Fragment będzie wysyłać nowy zbiór obiektów WindowInsets, dzięki czemu każdy fragment może teraz niezależnie korzystać z wbudowań. (I63f68, b/172153900)
  • DialogFragment teraz prawidłowo obsługuje przypadki, gdy fragment podrzędny jest dodawany do kontenera o tym samym identyfikatorze co kontener w niestandardowej klasie Dialog. Rozwiązuje to problemy z hierarchią widoków podczas ponownego używania identyfikatorów używanych wewnętrznie przez okna takie jak BottomSheetDialog. (Ie6279, b/180021387)
  • FragmentManager.dump() teraz prawidłowo wcina pierwszy fragment na liście aktywnych fragmentów. (If5c33, b/183705451)

Nowe poprawki błędów Menedżera stanu

  • Nowy menedżer stanu fragmentu prawidłowo obsługuje teraz przejścia wyjścia z operacjami ukrywania. (I9e4de, b/184830265)

Wersja 1.3.2

24 marca 2021 r.

Opublikowano androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 i androidx.fragment:fragment-testing:1.3.2. Wersja 1.3.2 zawiera te zatwierdzenia.

Nowe poprawki błędów Menedżera stanu

  • Gdy wykonasz jednocześnie operacje popBackStack() i commit(), ostatnia operacja ustawi kierunek dla wszystkich animacji zamiast używania niektórych animacji pop i animacji Enter. (I7072e, b/181142246)
  • Widoki w hierarchii wspólnych elementów nie będą już miały wyczyszczonej nazwy przejścia podczas wykonywania przejścia z elementu wspólnego. (I4d4a6, b/179934757)

Aktualizacje zależności

  • Fragment zależy teraz od aktywności 1.2.2. Naprawiono problem z sprawdzaniem lint InvalidFragmentVersionForActivityResult aktywności przy korzystaniu z fragmentu w wersji 1.3.1 lub nowszej.
  • Fragment zależy teraz od cyklu życia 2.3.1.

Wersja 1.3.1

10 marca 2021 r.

Opublikowano androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 i androidx.fragment:fragment-testing:1.3.1. Wersja 1.3.1 zawiera te zatwierdzenia.

Nowe funkcje

  • Okna w obiekcie DialogFragment mogą teraz uzyskać dostęp do właścicieli ViewTree za pomocą ich interfejsu DecorView, dzięki czemu DialogFragment może być używany z elementem ComposeView. (Ib9290, b/180691023)

Poprawki błędów

  • Fragmenty pobrane za pomocą działania typu RESUMED za pomocą FragmentContainerView są teraz wyświetlane prawidłowo po zmianie konfiguracji. (Ie14c8, b/180538371)
  • Nie ma już dodatkowego znaku } na końcu fragmentu toString() (I54705, b/177761088)
  • Zastąpione metody w FragmentActivity prawidłowo dziedziczą metodę podstawową javaDoc (I736ce, b/139548782).
  • W dokumentacji dotyczącej parametrów setFragmentResult i setFragmentResultListener zaktualizowaliśmy dokumentację dotyczącą parametrów, aby zaznaczyć, że nie akceptują już one wartości null (I990ba, b/178348386).

Nowe poprawki błędów Menedżera stanu

  • Naprawiono wyciek pamięci we fragmentach spowodowanych przez mFocusedView (Ib4e9e, b/179925887)
  • Fragmenty kodu teraz poprawnie wywołują onCreateOptionsMenu podczas korzystania z funkcji pokazywania/ukrywania transakcji (I8bce8, b/180255554).
  • Fragmenty podrzędne z przejściami, które zaczynają się przed rozmieszczeniem fragmentu, będą teraz prawidłowo docierać do lokalizacji RESUMED (Ic11e6, b/180825150)
  • Fragmenty pobrane za pomocą tagu <fragment> będą teraz zawsze znajdować się w postaci RESUMED (I452ac, (I9fa49)

Aktualizacje zależności

Wersja 1.3.0

10 lutego 2021 r.

Opublikowano androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 i androidx.fragment:fragment-testing:1.3.0. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.2.0

  • Nowy menedżer stanu: znaczne przeredagowanie kodu wewnętrznego FragmentManager rozwiązało wiele problemów z wysyłaniem zdarzeń cyklu życia, animacji i przejścia, a także obsługi odłożonych fragmentów.
  • Integracja interfejsu Activity Result API: dodaliśmy obsługę interfejsu API ActivityResultRegistry wprowadzonego w aktywności 1.2.0, aby umożliwić obsługę przepływów startActivityForResult()+onActivityResult() i requestPermissions()+onRequestPermissionsResult() bez zastępowania metod z fragmentu kodu, a także zapewnienie haków do testowania tych przepływów. Zobacz zaktualizowany Uzyskiwanie wyników z aktywności.

    • W tej wersji rozwiązaliśmy kilka problemów związanych z nieprawidłowymi kodami żądań i wysyłaniem żądań uprawnień, które uniemożliwiają działanie interfejsu Activity Result API w poprzednich wersjach systemu FragmentActivity. Aby korzystać z interfejsów API wyników związanych z aktywnością w FragmentActivity lub AppCompatActivity, musisz uaktualnić fragment do wersji 1.3.0.
  • Fragment interfejsu API wyników: dodano obsługę przekazywania wyników między dwoma fragmentami przy użyciu nowych interfejsów API w interfejsie FragmentManager. Sprawdza się to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), elementów DialogFragments i fragmentów w nawigacji oraz daje pewność, że wyniki będą wysyłane do Twojego fragmentu Fragment, gdy ma on co najmniej STARTED. Interfejsy API fragmentów docelowych zostały wycofane i zastąpione nowymi. Zobacz Uzyskiwanie wyników za pomocą interfejsu Fragment Result API.

  • FragmentOnAttachListener: wywołanie zwrotne onAttachFragment() dla FragmentActivity i Fragment zostało wycofane. Został dodany nowy element FragmentOnAttachListener, który zapewnia bardziej elastyczną alternatywę, umożliwiając delegowanie uprawnień onAttachFragment() do rozdzielania, testowanych detektorów i obsługę dodawania detektora do obiektów FragmentManagers innych niż bezpośredni podrzędny element FragmentManager.

  • FragmentScenario Usprawnienia: klasa FragmentScenario z artefaktu fragment-testing została napisana w Kotlin i otrzymała szereg ulepszeń:

    • FragmentScenario używa teraz setMaxLifecycle() do implementacji moveToState(), zapewniając spójne działanie na wszystkich poziomach interfejsu API i odłączając stan fragmentu od bazowej aktywności.
    • FragmentScenario obsługuje teraz ustawienie początkowego Lifecycle.State, aby obsługiwać potwierdzanie stanu fragmentu przed pierwszym przejściem do każdego z elementów Lifecycle.State.
    • Alternatywą dla interfejsu API FragmentScenario onFragment jest teraz metoda zreformowanego rozszerzenia Kotlin withFragment, która pozwala zwrócić wartość. W szczególności dodaje ona wyjątki wskazane w danym bloku.
  • Obsługa ViewTree: Fragment obsługuje teraz interfejsy API ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View) i ViewTreeSavedStateRegistryOwner dodane w sekcjach Cykl życia 2.3.0 i SavedState 1.1.0, dzięki czemu podczas korzystania z elementu Fragment zwracany jest fragment ViewModelStoreOwner, a SavedStateRegistryOwner i LifecycleOwner powiązane z cyklem życia fragmentu w obrębie Fragment.View

  • Zmiana animacji TRANSIT_: domyślne efekty fragmentu – TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE i TRANSIT_FRAGMENT_FADE – teraz używane są teraz Animator zamiast Animation. Zasoby używane do tworzenia tych animatorów są teraz prywatne.

  • Wycofanie funkcji setRetainInstance(): metoda setRetainInstance() we fragmentach adresów została wycofana. Dzięki wprowadzeniu ViewModels deweloperzy mają własny interfejs API umożliwiający zachowywanie stanu, który można powiązać z aktywnościami, fragmentami kodu i wykresami nawigacyjnymi. Dzięki temu deweloperzy mogą używać normalnego, niezachowanego fragmentu i oddzielać konkretny stan, który chcą zachować. Pozwala to uniknąć wspólnego źródła wycieków, a jednocześnie zachować przydatne właściwości pojedynczego utworzenia i zniszczenia przechowywanego fragmentu (tj. konstruktora ViewModel i otrzymywanego przez niego wywołania zwrotnego onCleared()).

  • Wycofanie adaptera ViewPager 1: wraz z udostępnieniem modelu ViewPager2 1.0.0 klasy FragmentPagerAdapter i FragmentStatePagerAdapter dotyczące interakcji z ViewPager zostały wycofane. Zapoznaj się z artykułem Migracja z ViewPager do ViewPager2.

Wersja 1.3.0-rc02

27 stycznia 2021 r.

Opublikowano androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 i androidx.fragment:fragment-testing:1.3.0-rc02. Wersja 1.3.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że po zmianie konfiguracji element nadrzędny DialogFragment był wyświetlany nad elementem podrzędnym DialogFragment. Fragmenty okien podrzędnych są teraz zawsze widoczne nad fragmentem okna nadrzędnego. (I30806, b/177439520)
  • Rozwiązaliśmy problem polegający na tym, że wykonanie operacji hide z użyciem Animation powodowało, że fragment ukrywający migał na końcu animacji. (I57e22, b/175417675)
  • Fragmenty z przejściami dodanymi przed dołączeniem hierarchii widoków teraz poprawnie docierają do zakresu RESUMED. (I1fc1d, b/177154873)

Nowe poprawki błędów Menedżera stanu

  • Widok Lifecycle fragmentu teraz prawidłowo obsługuje przypadki, w których widok fragmentu zostaje zniszczony, zanim Lifecycle osiągnie wartość CREATED, co pozwala uniknąć wyjątków z opisem „brak zdarzeń w przypadku INITIALIZED”. (eda2bd, b/176138645)
  • Podczas korzystania z elementu FragmentContainerView fragmenty z atrybutem Animator wyświetlają się teraz w odpowiedniej kolejności. (Id9aa3, b/176089197)

Wersja 1.3.0-rc01

16 grudnia 2020 roku

Opublikowano androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 i androidx.fragment:fragment-testing:1.3.0-rc01. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Parametr onPrepareOptionsMenu() działa teraz tak samo jak element onCreateOptionsMenu() i nie jest już wywoływany, gdy fragment nadrzędny wywołuje metodę setMenuVisibility(false). (Id7de8, b/173203654)

Nowe poprawki błędów Menedżera stanu

  • Naprawiliśmy wyciek i artefakt wizualny podczas dodawania fragmentu z elementem Animation do elementu FragmentContainerView, a następnie przerywania tego działania za pomocą operacji pop. (I952d8)
  • Naprawiono problem polegający na tym, że widok fragmentu pozostawał w hierarchii widoków, jeśli został zastąpiony podczas korzystania z metod onCreate() lub onViewCreated(). (I8a7d5)
  • Po wznowieniu fokus jest teraz prawidłowo przywracany do widoków głównych Fragmentu. (Ifc84b)
  • Połączenie operacji „pop” i „zastąp” w tej samej transakcji fragmentu spowoduje teraz wyświetlenie prawidłowych animacji (Ifd4e4, b/170328691).

Wersja 1.3.0-beta02

Grudzień 2, 2020

Opublikowano androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 i androidx.fragment:fragment-testing:1.3.0-beta02. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Usługa FragmentScenario została w pełni przekonwertowana na Kotlin z zachowaniem zgodności ze źródłem i plikiem binarnym przez wykorzystanie funkcjonalnych interfejsów Kotlin 1.4 w FragmentAction. (I19d31).

Zmiany w działaniu

  • Obiekty FragmentContainerView, które nie zwiększają fragmentu za pomocą atrybutu class lub android:name, mogą być teraz używane poza obiektem FragmentActivity. (Id4397, b/172266337)
  • Próba ustawienia maksymalnego cyklu życia fragmentu na DESTROYED spowoduje teraz zgłoszenie błędu IllegalArgumentException (Ie7651, b/170765622)
  • Inicjowanie obiektu FragmentScenariusz ze stanem DESTROYED spowoduje zgłoszenie błędu IllegalArgumentException (I73590, b/170765622)

Nowe poprawki błędów Menedżera stanu

  • Naprawiono błąd, który powodował, że widok nie osiągał ostatecznego stanu w przypadku przerwania przejścia fragmentu przy użyciu metody Animator lub jednej z opcji TRANSIT_FRAGMENT_. (I92426, b/169874632)
  • Naprawiono błąd, który uniemożliwiał prawidłowe zniszczenie fragmentów z wyjściem Animation. (I83d65)
  • Wyjście z fragmentami, których efekty zostały odwrócone, prawidłowo anuluje się i uruchomi ponownie z odpowiednim efektem wejścia. (I62226, b/167092035)
  • Rozwiązaliśmy problem, który powodował, że wyjście Animator z hide() nie działało. (Id7ffe).
  • Fragmenty wyświetlają się teraz prawidłowo, gdy zostaną przełożone, i uruchomione natychmiast. (Ie713b, b/170022857)
  • Fragmenty, które w trakcie animacji usuwają aktywny widok, nie będą już próbować przywrócić zaznaczenia tego widoku po osiągnięciu wartości RESUMED (I38c65, b/172925703)

Wkład z zewnątrz

  • FragmentFactory przechowuje teraz w pamięci podręcznej klasy fragmentów oddzielnie dla różnych instancji ClassLoader. Dziękuję, Simon Schiller! (#87, b/113886460)

Wersja 1.3.0-beta01

1 października 2020 roku

Opublikowano androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 i androidx.fragment:fragment-testing:1.3.0-beta01. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • setMaxLifecycle() obsługuje teraz ustawianie stanu Lifecycle na INITIALIZING, o ile fragment nie został przeniesiony do CREATED. (b/159662173)

Zmiany w interfejsie API

Zmiany w działaniu

  • Pliki zasobów z fragmentem zostały prawidłowo ustawione jako prywatne. (Aosp/1425237)

Poprawki błędów

  • Fragmenty powiększone za pomocą tagu <fragment> będą teraz prawidłowo czekać, aż ich widoki danych zostaną dodane do kontenera, i przeniosą je do STARTED (I02f4c).
  • Fragmenty, które są widoczne, a potem od setMaxLifecycle() do CREATED, teraz prawidłowo uruchamiają efekty wyjścia. (b/165822335)
  • Usunięcie odłączonego fragmentu, który nie został dodany do stosu, nie powoduje już wycieku pamięci. Dzięki uprzejmości Nicklasa Ansmana Giertza. (b/166489383)
  • Aktywne fragmenty będą teraz zawsze mieć niepustą wartość FragmentManager, a fragmenty z niepustą wartością FragmentManager będą zawsze uznawane za aktywne. (Aosp/1422346)
  • Domyślne efekty fragmentów (TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE i TRANSIT_FRAGMENT_FADE) używają teraz Animator zamiast Animation. (b/166155034)

Nowe poprawki błędów Menedżera stanu

  • Teraz prawidłowo przywracają one stan zaznaczenia przed rozpoczęciem animacji. (Icc256)
  • Fragmenty z jedynym wspólnym przejściem elementów teraz prawidłowo kończą swoje efekty specjalne, co oznacza, że przechodzą do stanu końcowego (Iaebc7, b/166658128)
  • Widoki fragmentów są teraz zawsze usuwane z kontenera przed zniszczeniem. (Id5876)
  • Nowy menedżer stanu konsekwentnie usuwa teraz zamknięty widok fragmentu przed dodaniem nowego. (I41a6e).
  • Jawne zmiany w widoczności widoku fragmentu są teraz uwzględniane przez nowego menedżera stanu. Oznacza to, że jeśli przed rozpoczęciem animacji ustawisz widok fragmentu na INVISIBLE, pozostanie on niewidoczny. (b/164481490)
  • Fragmenty mają teraz wyższy priorytet niż Animators, a nie Animations, co oznacza, że fragment zawierający oba typy będzie uruchamiał tylko funkcję Animator i ignorował Animation. (b/167579557)
  • Nowy menedżer stanu nie powoduje już migania fragmentów podczas wprowadzania animacji. (b/163084315)

Znany problem

Jeśli podczas używania nowego menedżera stanu naciśniesz Wstecz podczas wprowadzania efektu specjalnego, zamiast wracać do poprzedniego fragmentu, stary fragment nie zostanie nigdy ponownie dodany, co spowoduje wyświetlenie pustego ekranu. (b/167259187, b/167092035, b/168442830)

Wersja 1.3.0-alfa08

19 sierpnia 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 i androidx.fragment:fragment-testing:1.3.0-alpha08. Wersja 1.3.0-alpha08 zawiera te zatwierdzenia.

Nowy menedżer stanu

Ta wersja zawiera poważną refaktoryzację wewnętrznego zarządzania stanem w FragmentManager, która wpływa na realizację metod cyklu życia, animacji i przejścia oraz sposób obsługi odłożonych transakcji. Ta opcja jest domyślnie włączona. Więcej informacji znajdziesz w tym poście na blogu Fragments: Rebuilding the Internals (Fragmenty: odbudowanie zasobów wewnętrznych). (b/139536619, b/147749580)

  • Eksperymentalny interfejs API w FragmentManager.enableNewStateManager(boolean) może być używany do kontrolowania, czy FragmentManager używa nowego menedżera stanu. (I7b6ee)

Te problemy można rozwiązać tylko przy użyciu nowego menedżera stanu:

  • Poprzedni fragment operacji replace jest teraz prawidłowo zatrzymany przed rozpoczęciem nowego fragmentu. (b/161654580)
  • Fragmenty uniemożliwiają teraz wyświetlanie wielu konkurujących ze sobą animacji w tych samych fragmentach. Pozwala to uniknąć sytuacji, w których element Animation zastąpiłby wszystkie efekty Transition lub działałby Animator i Transition w danym fragmencie. (b/149569323)
  • Parametry enterTransition i exitTranstion wszystkich otwierających i wychodzących fragmentów są teraz uruchamiane, a nie tylko ostatni fragment otwierający i pierwszy wychodzący fragment. (b/149344150)
  • Przełożone fragmenty nie zatrzymują się już w stanie CREATED, ale zamiast tego są przenoszone do STARTED z innymi fragmentami. (b/129035555)
  • Rozwiązaliśmy problem, który powodował, że FragmentManager wykonywał operacje w niewłaściwej kolejności, gdy łączyło odroczoną transakcję ponownie z transakcją nieuporządkowaną. (b/147297731)
  • Pokazywanie wielu fragmentów jednocześnie nie spowoduje, że fragmenty pośrednie będą tymczasowo widoczne podczas odkładania fragmentów. (b/37140383)
  • Funkcja FragmentManager zwraca teraz poprawne fragmenty podczas wywoływania funkcji findFragmentById() lub findFragmentByTag() z wywołania zwrotnego onAttachFragment(). (b/153082833)
  • Fragmenty nie wywołują już wywołania onCreateView() w przypadku zniszczonych fragmentów, gdy zostanie przełożony fragment, który je zastępuje. (b/143915710)
  • Komunikat o błędzie wyświetlany podczas próby połączenia instancji platformy Transition i Androida X Transition wspomina teraz o fragmentie z nieprawidłowym przejściem. (b/155574969)

Zmiany w działaniu

  • Możesz teraz wywołać launch() w ActivityResultLauncher w metodzie cyklu życia fragmentu onCreate(). (b/161464278)
  • Wywołanie metody registerForActivityResult() po zmianie metody onCreate() powoduje teraz zgłoszenie wyjątku wskazujące, że jest to niedozwolone, zamiast dyskretnego niedostarczenia wyników po zmianie konfiguracji. (b/162255449)
  • FragmentActivity używa teraz interfejsu API OnContextAvailableListener wprowadzonego w aktywności 1.2.0-alpha08 do przywracania stanu FragmentManager. Wszystkie detektory dodane do podklas modelu FragmentActivity będą uruchamiane po tym detektorze. (I513da)

Poprawki błędów

  • Kontrola ActivityOptions podczas korzystania z startIntentSenderForResult() jest teraz respektowana. (b/162247961)

Znany problem

  • Gdy używasz nowego menedżera stanu, bezpośrednie ustawienie widoczności widoku głównego fragmentu po onViewCreated() i przed onResume() powoduje, że ustawiona przez Ciebie widoczność zostanie zastąpiona przez FragmentManager, który kontroluje widoczność widoku głównego. Aby obejść ten problem, zawsze używaj operacji hide() i show() do zmiany widoczności fragmentu. (b/164481490)

Wersja 1.3.0-alfa07

22 lipca 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 i androidx.fragment:fragment-testing:1.3.0-alpha07. Wersja 1.3.0-alpha07 zawiera te zatwierdzenia.

Nowe funkcje

  • W FragmentScenario można teraz ustawiać początkowy stan cyklu życia na CREATED, STARTED lub RESUMED zamiast zawsze przenosić fragment do stanu RESUMED. (b/159662750)
  • Dodano alternatywę do interfejsu API FragmentScenario onFragment w postaci metody zreformowanego rozszerzenia Kotlin withFragment, która pozwala zwrócić wartość. W szczególności dodaje ona wyjątki wskazane w danym bloku. (b/158697631)

Zmiany w działaniu

  • FragmentScenario używa teraz setMaxLifecycle() do implementacji moveToState(), zapewniając spójne działanie na wszystkich poziomach interfejsu API i odłączając stan fragmentu od bazowej aktywności. (b/156527405)
  • Wartość SavedStateRegistryOwner zwrócona przez usługę ViewTreeSavedStateRegistryOwner jest teraz powiązana z cyklem życia widoku fragmentu. Dzięki temu jego stan zostanie zapisany i przywrócony w tym samym czasie co widok fragmentu. (b/158503763)

Poprawki błędów

  • Fragmenty czekają teraz na dołączenie widoku fragmentu przed wywołaniem funkcji ViewCompat.requestApplyInsets(). Pozwala to uniknąć pomijania żądań wstawionych. (b/158095749)
  • Wywołanie clearFragmentResultListener teraz prawidłowo czyści obserwator cyklu życia. (b/159274993)

Wersja 1.3.0-alfa06

10 czerwca 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 i androidx.fragment:fragment-testing:1.3.0-alpha06. Wersja 1.3.0-alpha06 zawiera te zatwierdzenia.

Nowe funkcje

  • Wywołanie zwrotne onAttachFragment() dotyczące parametrów FragmentActivity i Fragment zostało wycofane. Dodaliśmy nowy FragmentOnAttachListener, który zapewnia bardziej elastyczną alternatywę, umożliwiając delegowanie uprawnień onAttachFragment() do rozdzielania, testowanych detektorów oraz obsługę dodawania detektora do obiektów FragmentManagers innych niż bezpośredni element podrzędny FragmentManager. (I06d3d).

Poprawki błędów

  • Fragmenty nadrzędne są teraz przywracane do stanu wyświetlania przed fragmentami podrzędnymi, co rozwiązuje problem z wizualną kolejnością elementów po zmianie konfiguracji, gdy element DialogFragment pokazuje inny element DialogFragment jako fragment podrzędny. (b/157195715)
  • Rozwiązaliśmy problem, który powodował, że funkcja sprawdzania Lintowania UseRequireInsteadOfGet nie prawidłowo obsługiwała łańcuchowych zastosowań operatorów ?. i !!. (b/157677616)

Wersja 1.3.0-alfa05

20 maja 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 i androidx.fragment:fragment-testing:1.3.0-alpha05. Wersja 1.3.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w interfejsie API

  • Interfejsy API setFragmentResult() i setFragmentResultListener() przyjmują teraz niepuste wartości Bundle i FragmentResultListener. Aby wyraźnie wyczyścić wcześniej ustawiony wynik lub odbiornik, użyj nowych metod clearFragmentResult() i clearFragmentResultListener(). (b/155416778)
  • Rozszerzenia setFragmentResultListener() w Kotlin, które otrzymują sygnał lambda, są teraz oznaczone jako inline. (b/155323404)

Zmiany w działaniu

  • Wycofane wcześniej startActivityForResult(), startIntentSenderForResult() i requestPermissions w systemie Fragment używają teraz wewnętrznie ActivityResultRegistry, co znosi ograniczenie dotyczące używania tylko dolnych bitów (poniżej 0xFFFF) w przypadku kodów żądań podczas używania tych interfejsów API. (b/155518741)

Aktualizacje dokumentacji

  • Rozszerzyliśmy dokumentację konstruktorów Fragment(@LayoutRes int) i DialogFragment(@LayoutRes int), aby wyjaśnić, że podczas korzystania z domyślnego FragmentFactory konstruktora bez argumentów w podklasach należy je wywoływać. (b/153042497)

Wersja 1.3.0-alfa04

29 kwietnia 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 i androidx.fragment:fragment-testing:1.3.0-alpha04. Wersja 1.3.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę przekazywania wyników między dwoma fragmentami fragmentów przez nowe interfejsy API w FragmentManager. Sprawdza się to w przypadku fragmentów hierarchii (nadrzędnych/podrzędnych), elementów DialogFragments i fragmentów w nawigacji oraz daje pewność, że wyniki będą wysyłane do Twojego fragmentu Fragment, gdy ma on co najmniej STARTED. (b/149787344)

Zmiany w interfejsie API

Poprawki błędów

  • Funkcja getViewLifecycleOwner() fragmentu jest teraz zatrzymywana przed wywołaniem metody onSaveInstanceState(), co odzwierciedla zachowanie cyklu życia fragmentu. (b/154645875)
  • Wywołanie metody setMenuVisibility(false) we fragmencie prawidłowo zmienia teraz widoczność menu dostarczanych przez fragmenty podrzędne. (b/153593580)
  • Poprawiliśmy błąd illegalStateException podczas dodawania fragmentu do hierarchii widoków elementu DialogFragment za pomocą polecenia FragmentContainerView. (b/154366601)
  • Metoda getDefaultViewModelProviderFactory() dotycząca fragmentów nie ulega już awarii, gdy hostujesz fragmenty poza aktywnością. (b/153762914)

Wersja 1.3.0-alfa03

1 kwietnia 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 i androidx.fragment:fragment-testing:1.3.0-alpha03. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Metody prepareCall w Fragment są teraz final. (b/152439361)

Poprawki błędów

  • Naprawiliśmy regresję w Fragmentie 1.3.0-alpha02 podczas korzystania z parametru BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163)
  • Naprawiono awarię, która występowała podczas korzystania z elementu prepareCall z fragmentu po zmianie konfiguracji. (b/152137004)
  • Rozwiązaliśmy problem, który powodował, że podczas korzystania z elementu setTargetFragment() przejścia między udostępnionymi elementami i zdarzeniami wyjściowymi były ignorowane. (b/152023196)
  • Z fragmentu 1.2.4: zaktualizowano reguły ProGuard Fragmentu, aby umożliwić zaciemnianie zachowywanych fragmentów. (b/151605338)
  • Z fragmentu 1.2.4: wyłączono regułę Lint FragmentLiveDataObserve w klasach DialogFragment, ponieważ ich cykl życia i cykl życia widoku są zawsze zsynchronizowane, dzięki czemu można bezpiecznie używać this lub viewLifecycleOwner podczas wywoływania observe. (b/151765086)

Zmiany zależności

  • Fragmenty zależą od aktywności 1.2.0-alpha03, która miała znaczne ulepszenia w interfejsie Activity Result API wprowadzonego w aktywności 1.2.0-alpha02.

Wersja 1.3.0-alfa02

18 marca 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 i androidx.fragment:fragment-testing:1.3.0-alpha02. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy obsługę interfejsu API ActivityResultRegistry wprowadzonego w aktywności 1.2.0-alpha02 do obsługi przepływów startActivityForResult()+onActivityResult() i requestPermissions()+onRequestPermissionsResult() bez zastępowania metod w Fragmentie, a także udostępnienia punktów zaczepienia do testowania tych przepływów. Zobacz zaktualizowany Uzyskiwanie wyników z aktywności. (b/125158199)

Zmiany w interfejsie API

  • DialogFragment udostępnia teraz konstruktor używający elementu @LayoutRes wskazującego układ, który onCreateView() powinien domyślnie zwiększać. (b/150327080)
  • Metoda onActivityCreated() została wycofana. Kod dotykający widoku fragmentu należy wprowadzać w interfejsie onViewCreated() (który jest wywoływany bezpośrednio przed tagiem onActivityCreated()), a inny kod inicjujący – w onCreate(). Aby można było do Ciebie oddzwonić, gdy onCreate() aktywności dobiegnie końca, trzeba zarejestrować LifeCycleObserver w elemencie Lifecycle aktywności w onAttach() i usunąć go po odebraniu wywołania zwrotnego onCreate(). (b/144309266)

Poprawki błędów

  • Z fragmentu 1.2.3: naprawiono błąd w komponencie DialogFragment, który powodował StackOverflowError podczas wywoływania funkcji getLayoutInflater() z poziomu onCreateDialog(). (b/117894767, aosp/1258664)
  • Z fragmentu 1.2.3: zmniejszono zakres reguł ProGuard zawartych w elemencie Fragment, żeby można było usunąć nieużywane klasy Fragmentu. (b/149665169)
  • Z fragmentu 1.2.3: poprawiono błędne wyniki w kontroli linta UseRequireInsteadOfGet w przypadku używania nazwy zmiennej lokalnej, która zastępowała nazwę właściwości Kotlin. (b/149891163)
  • Z fragmentu 1.2.3: FragmentContainerView nie zwraca już UnsupportedOperationException z powodu użycia nieprawidłowego konstruktora w podglądzie układu. (b/149707833)

Znane problemy

  • Aplikacja BottomSheetDialogFragment nie umieszcza już poprawnie okna na ekranie. (b/151652127)

Wersja 1.3.0-alfa01

4 marca 2020 r.

Opublikowano androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 i androidx.fragment:fragment-testing:1.3.0-alpha01. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

Zmiany w interfejsie API

  • Metoda setRetainInstance() w przypadku fragmentów kodu została wycofana. Dzięki wprowadzeniu ViewModels deweloperzy mają własny interfejs API umożliwiający zachowywanie stanu, który można powiązać z aktywnościami, fragmentami kodu i wykresami nawigacyjnymi. Dzięki temu deweloperzy mogą używać normalnego, niezachowanego fragmentu i oddzielać konkretny stan, który chcą zachować. Pozwala to uniknąć wspólnego źródła wycieków, a jednocześnie zachować przydatne właściwości pojedynczego utworzenia i zniszczenia przechowywanego fragmentu (tj. konstruktora ViewModel i otrzymywanego przez niego wywołania zwrotnego onCleared()). (b/143911815)
  • W wersji ViewPager2 1.0.0 klasy FragmentPagerAdapter i FragmentStatePagerAdapter dotyczące interakcji z ViewPager zostały wycofane. Zapoznaj się z artykułem Migracja z ViewPager do ViewPager2. (b/145132715)

Poprawki błędów

  • Reguły ProGuard Fragmentu prawidłowo teraz zachowują tylko używane domyślne klasy Fragment, a nie wszystkie instancje Fragment. Poprawia to regresję wprowadzoną we Fragmentie 1.2.1. (b/149665169
  • Reguły Lint require___() dodane w Fragmentie 1.2.2 nie są już fałszywie dodatnie w przypadku zmiennych lokalnych o tej samej nazwie co powielane nazwy właściwości Kotlin (np. view). (b/149891163)
  • FragmentContainerView nie zwraca już błędu UnsupportedOperationException podczas korzystania z podglądu układu w Android Studio. (b/149707833)
  • Naprawiono problem polegający na tym, że zachowywane fragmenty dodane po zapisaniu stanu nie były stale odtwarzane, a następnie niszczone po każdej zmianie konfiguracji. (b/145832397)

Wersja 1.2.5

Wersja 1.2.5

10 czerwca 2020 r.

Opublikowano androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 i androidx.fragment:fragment-testing:1.2.5. Wersja 1.2.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Funkcja getViewLifecycleOwner() fragmentu jest teraz zatrzymywana przed wywołaniem metody onSaveInstanceState(), co odzwierciedla zachowanie cyklu życia fragmentu. To było wcześniej opublikowane w ramach fragmentu 1.3.0-alpha04. (b/154645875)
  • Wywołanie metody setMenuVisibility(false) we fragmencie prawidłowo zmienia teraz widoczność menu dostarczanych przez fragmenty podrzędne. To było wcześniej opublikowane w ramach fragmentu 1.3.0-alpha04. (b/153593580)

Wersja 1.2.4

Wersja 1.2.4

1 kwietnia 2020 r.

Opublikowano androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 i androidx.fragment:fragment-testing:1.2.4. Wersja 1.2.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano reguły ProGuard Fragmentu, aby umożliwić zaciemnianie zachowywanych fragmentów. (b/151605338)
  • Wyłączono regułę lintowania FragmentLiveDataObserve w klasach DialogFragment, ponieważ cykl życia i cykl życia widoku danych są zawsze zsynchronizowane, dzięki czemu można bezpiecznie używać this lub viewLifecycleOwner podczas wywoływania observe. (b/151765086)

Wersja 1.2.3

Wersja 1.2.3

18 marca 2020 r.

Opublikowano androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 i androidx.fragment:fragment-testing:1.2.3. Wersja 1.2.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd w funkcji DialogFragment, który powodował wyświetlenie błędu StackOverflowError podczas wywoływania metody getLayoutInflater() z poziomu aplikacji onCreateDialog(). (b/117894767, aosp/1258665)
  • Ograniczyliśmy zakres uwzględnionych reguł ProGuard Fragmentu, by umożliwić usunięcie nieużywanych klas Fragmentu. (b/149665169)
  • Naprawiono błędne wyniki w sprawdzaniu Lint (UseRequireInsteadOfGet) w przypadku używania nazwy zmiennej lokalnej, która nakładała się na nazwę właściwości Kotlin. (b/149891163)
  • FragmentContainerView nie zgłasza już UnsupportedOperationException za użycie nieprawidłowego konstruktora w podglądzie układu. (b/149707833)

Wersja 1.2.2

Wersja 1.2.2

19 lutego 2020 r.

Opublikowano androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 i androidx.fragment:fragment-testing:1.2.2. Wersja 1.2.2 zawiera te zatwierdzenia.

Nowe testy Lint

  • Lint sugeruje użycie viewLifecycleOwner jako LifecycleOwner, aby wywołać OnBackPressedDispatcher w onCreateView(), onViewCreated() i onActivityCreated(). (b/142117657)
  • Dodaliśmy nowy test Lint, który potwierdza, że podczas korzystania z artefaktu fragment-testing używasz prawidłowego atrybutu debugImplementation. (b/141500106)
  • W przypadku wszystkich interfejsów API fragmentu kodu, które zawierają odpowiedniki w wersji get i require, w przypadku fragmentów kodu proponujemy teraz użycie powiązanych metod require___(), a nie checkNotNull(get___()), requireNonNull(get___()) czy get___()!!. (Aosp/1202883)

Poprawki błędów

  • Poprawiono pliki z fragmentem ProGuard, aby uniknąć ostrzeżeń R8 (b/148963981).
  • Ulepszyliśmy obecny test Lint który sugeruje użycie viewLifecycleOwner w przypadku korzystania z interfejsu observe, aby obsługiwać również metodę observe metody rozszerzenia livedata-ktx. (b/148996309)
  • Poprawiono formatowanie w wielu operacjach sprawdzania Lint (aosp/1157012).

Treści tłumaczone z zewnątrz

  • Dziękujemy Zac Sweers za przesłanie require___() kontroli Lint w imieniu Slacka. (Aosp/1202883)

Wersja 1.2.1

Wersja 1.2.1

5 lutego 2020 r.

Opublikowano androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 i androidx.fragment:fragment-testing:1.2.1. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • W przypadku fragmentów dodanych za pomocą metod add i replace, które przyjmują wystąpienie Class (lub zreformowane wersje Kotlin), ich domyślny konstruktor jest teraz przechowywany przez ProGuard. (b/148181315)
  • Wyjątki FragmentStatePagerAdapter i FragmentPagerAdapter nie są już wykrywane przez FragmentManager podczas uruchamiania finishUpdate(). (Aosp/1208711)
  • Naprawiono błąd, który powodował, że funkcja FragmentManager.findFragment() nie działała z fragmentami dodanymi za pomocą tagu <fragment>. (b/147784323)
  • W układzie fragmenty witryn powiększone za pomocą tagu <fragment> zawsze otrzymują wywołanie onInflate() przed onCreate(). (Aosp/1215856)
  • Wywołanie toString() w instancji FragmentManager nie powoduje już wywołania NullPointerException, gdy aktywność została już zniszczona. (b/148189412)

Zmiany zależności

Wersja 1.2.0

Wersja 1.2.0

22 stycznia 2020 r.

Opublikowano androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 i androidx.fragment:fragment-testing:1.2.0. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • FragmentContainerView: FragmentContainerView to zdecydowanie zalecany kontener na potrzeby dynamicznie dodawanych fragmentów kodu, zastępujący użycie FrameLayout lub innych układów. Obsługuje też te same wartości class, android:name i opcjonalny android:tag co tag <fragment>, ale do dodania początkowego fragmentu używany jest normalny fragment FragmentTransaction zamiast niestandardowej ścieżki kodu używanej przez <fragment>.
  • Czas onDestroyView(): fragmenty kodu czekają teraz na animacje wyjścia, wyjścia platformy i przejścia AndroidaX (w przypadku korzystania z przejścia 1.3.0), zanim wywołają metodę onDestroyView().
  • add() i replace() oparte na klasach: dodano nowe przeciążenia obiektów add() i replace() w systemie FragmentTransaction, które przyjmują Class<? extends Fragment> i opcjonalnie Bundle argumentów. Te metody wykorzystują FragmentFactory do utworzenia wystąpienia fragmentu do dodania. Do interfejsu fragment-ktx zostały też dodane rozszerzenia Kotlin, które korzystają ze zmienionych typów (np.fragmentTransaction.replace<YourFragment>(R.id.container)).
  • Integracja z modelem ViewModel cyklu życia (ViewModel SavedState): SavedStateViewModelFactory jest teraz domyślną fabryką używaną w przypadku korzystania z by viewModels(), by activityViewModels(), konstruktora ViewModelProvider lub ViewModelProviders.of() z fragmentem.
  • Nowe testy Lint: dodaliśmy nowy test Lint, który sprawdza, czy używasz getViewLifecycleOwner() do obserwowania danych LiveData z okresów onCreateView(), onViewCreated() lub onActivityCreated().
  • Wycofanie metody getFragmentManager(): metody getFragmentManager() i requireFragmentManager() we fragmencie kodu zostały wycofane i zastąpione pojedynczą metodą getParentFragmentManager(), która zwraca niezerową wartość FragmentManager, do której jest dodawany fragment kodu (aby określić, czy można go bezpiecznie wywołać, użyj wartości isAdded()).
  • Wycofanie FragmentManager.enableDebugLogging(): statyczna metoda FragmentManager.enableDebugLogging została wycofana. FragmentManager obsługuje teraz parametr Log.isLoggable() dla tagu FragmentManager, dzięki czemu możesz włączyć logowanie DEBUG lub VERBOSE bez ponownego kompilowania aplikacji.

Znane problemy

  • Fragmenty, do których odwołuje się tylko atrybut class lub android:name w elemencie FragmentContainerView, nie są automatycznie zachowywane przez ProGuard, co wymaga ręcznego dodania reguły zachowywania dla każdej klasy fragmentu. (b/142601969)
  • Gdy dodasz element NavHostFragment za pomocą class lub android:name w formacie XML za pomocą FragmentContainerView, nie możesz użyć findNavController() w onCreate() aktywności. (b/142847973)

Wersja 1.2.0-rc05

Styczeń 8, 2020

Opublikowano androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 i androidx.fragment:fragment-testing:1.2.0-rc05. Wersja 1.2.0-rc05 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiliśmy regresję we fragmencie 1.2.0-rc04 podczas korzystania z tagu <fragment>, który powodował nieprawidłowe wywoływanie parametru onViewCreated() podczas niszczenia aktywności. (b/146290333)
  • Fragmenty dodane za pomocą tagu <fragment> są teraz prawidłowo wyczyszczone, nawet jeśli występują tylko w układzie poziomym. W efekcie fragmenty te są teraz prawidłowo przenoszone do CREATED, nawet jeśli nie znajdują się w Twoim układzie. Nie są tworzone przez utworzenie instancji, ale nigdy nie przechodzą przez żadne metody cyklu życia. (b/145769287)

Wersja 1.2.0-rc04

18 grudnia 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 i androidx.fragment:fragment-testing:1.2.0-rc04. Wersja 1.2.0-rc04 zawiera te zatwierdzenia.

Poprawki błędów

  • Dostosowaliśmy animacje w wersjach TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE i TRANSIT_FRAGMENT_FADE, aby uniknąć problemów z obrazem. (b/145468417)

Wersja 1.2.0-rc03

4 grudnia 2019

Opublikowano androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 i androidx.fragment:fragment-testing:1.2.0-rc03. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono niezamierzoną zmianę działania, w wyniku której usunięte fragmenty są nadal zwracane przez funkcję findFragmentById() / findFragmentByTag() podczas trwania animacji wyjścia/przejścia. (b/143982969, aosp/1167585)
  • Fragmenty podrzędne są teraz prawidłowo zatrzymywane przed elementami nadrzędnymi, gdy aktywność zawierająca wywołanie onSaveInstanceState(). (b/144380645)
  • Naprawiono błąd, przez który wyświetlenia były błędnie oznaczane jako INVISIBLE po wycięciu ukrytego fragmentu. (b/70793925)
  • Przejścia udostępnionych elementów obejmują teraz widoki, które zostały obrócone, przeskalowane itp. (b/142835261)

Aktualizacje dokumentacji

  • Doprecyzowaliśmy dokumentację wycofywania setUserVisibleHint(). (b/143897055)
  • Ulepszyliśmy dokumentację dotyczącą setFragmentFactory() i getFragmentFactory(), by lepiej wskazać, że ustawienie FragmentFactory będzie miało wpływ również na podrzędne elementy FragmentManager. (Aosp/1170095)

Zmiany zależności

  • Fragmenty są teraz zależne od cyklu życia 2.2.0-rc03, obiektu ViewModel SavedState 1.0.0-rc03 i aktywności 1.1.0-rc03.

Wersja 1.2.0-rc02

7 listopada 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 i androidx.fragment:fragment-testing:1.2.0-rc02. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • W kotlinie funkcja LintFix do użycia polecenia getViewLifecycleOwner() do obserwowania danych LiveData z onCreateView(), onViewCreated() i onActivityCreated() (wprowadzona w Fragmentu 1.2.0-rc01) używa teraz składni dostępu do właściwości Kotlin viewLifecycleOwner zamiast getViewLifecycleOwner(). (Aosp/1143821)

Wersja 1.2.0-rc01

23 października 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 i androidx.fragment:fragment-testing:1.2.0-rc01. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • FragmentContainerView obsługuje teraz oprócz atrybutu android:name atrybut class, powielając funkcje tagu <fragment>. (b/142722242)
  • Dodaliśmy nowy test Lint, który gwarantuje, że używasz narzędzia getViewLifecycleOwner() podczas obserwowania danych typu LiveData z okresów onCreateView(), onViewCreated() lub onActivityCreated(). (b/137122478)

Poprawki błędów

  • Wywołania zwrotne onDismiss i onCancel w metodzie DialogFragment gwarantują teraz, że przekazany do nich DialogInterface nie ma wartości null, a po wykonaniu żądania getDialog() zwraca wartość niezerową. (b/141974033)
  • FragmentContainerView dodaje teraz fragment zdefiniowany przez class lub android:name w ramach inflacji, dzięki czemu findFragmentById() i findFragmentByTag() działają natychmiast. (b/142520327)
  • Naprawiono błąd IllegalStateException w FragmentContainerView z powodu zapisywania stanu. (b/142580713)
  • Poprawiliśmy błąd UnsupportedOperationException w klasie FragmentContainerView, gdy klasa FragmentContainerView jest zaciemniona. (b/142657034)

Znane problemy

  • Fragmenty, do których odwołuje się tylko atrybut class lub android:name w elemencie FragmentContainerView, nie są automatycznie zachowywane przez ProGuard, co wymaga ręcznego dodania reguły zachowywania dla każdej klasy fragmentu. Wyłączyliśmy regułę Lint sugerującą przeniesienie do FragmentContainerView, dopóki problem nie zostanie rozwiązany w aapt2. (b/142601969)

Wersja 1.2.0-beta02

11 października 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 i androidx.fragment:fragment-testing:1.2.0-beta02. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który powodował, że element onInflate() fragmentu nie otrzymywał odpowiednich atrybutów z FragmentContainerView, co powodowało niedziałające przypadki, takie jak NavHostFragment. (b/142421837)

Wersja 1.2.0-beta01

9 października 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 i androidx.fragment:fragment-testing:1.2.0-beta01. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • FragmentContainerView dodaje obsługę dodawania początkowego fragmentu z obsługą android:name i opcjonalnych atrybutów XML android:tag. W odróżnieniu od tagu <fragment> FragmentContainerView używa normalnego typu FragmentTransaction znajdującego się pod maskowaniem, aby dodać początkowy fragment, co umożliwia dalsze operacje FragmentTransaction w FragmentContainerView i umożliwia użycie powiązania widoku na potrzeby układu. (b/139830628, b/141177981)
  • W przypadku fragmentów kodu pojawia się teraz ostrzeżenie o lintowaniu, które umożliwia szybkie zastąpienie elementu <fragment> elementem FragmentContainerView. (b/139830056)

Poprawki błędów

  • Naprawiono błąd ClassCastException przy korzystaniu z androidx.transition. (b/140680619)
  • Gdy używasz przejścia 1.3.0-beta01, fragmenty wymagają teraz zakończenia przejścia androidx.transition (oprócz przejść platformy i animacji, które zostały poprawione odpowiednio w Fragmentie 1.2.0-alpha03 i Fragment 1.2.0-alpha02), zanim wyślesz onDestroyView(). (Aosp/1119841)
  • Gdy używasz przejścia 1.3.0-beta01, fragmenty z poprawnym anulowaniem przejść androidx.transition przed rozpoczęciem nowych przejść i animacji w tym samym kontenerze. (Aosp/1119841)
  • Naprawiono problem w interfejsie API na poziomie 17 i starszym podczas korzystania z przejścia androidx.transition w widoku głównym widoku fragmentów podczas korzystania z metody FragmentContainerView. (b/140361893)
  • Artefakt fragment-testing jest teraz zależny od systemu AndroidX Test 1.2.0, co pozwala wyeliminować brak zgodności z najnowszym Espresso 3.2.0. (b/139100149)
  • W elemencie FragmentManager usunięto użycie atrybutu Log.w. (Aosp/1126468)

Znane problemy

  • Element onInflate() fragmentu nie otrzymuje prawidłowych atrybutów z elementu FragmentContainerView, co jest przyczyną problemów takich jak NavHostFragment. (b/142421837)

Wersja 1.2.0-alfa04

18 września 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 i androidx.fragment:fragment-testing:1.2.0-alpha04. Wersja 1.2.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Metody getFragmentManager() i requireFragmentManager() w obiekcie Fragment zostały wycofane i zastąpione pojedynczą metodą getParentFragmentManager(), która zwraca wartość FragmentManager, do której został dodany fragment (możesz użyć isAdded(), aby określić, czy można je bezpiecznie wywołać). (b/140574496)
  • Metoda statyczna FragmentManager.enableDebugLogging została wycofana. FragmentManager obsługuje teraz parametr Log.isLoggable() dla tagu FragmentManager, dzięki czemu możesz włączyć logowanie DEBUG lub VERBOSE bez ponownego kompilowania aplikacji. (aosp/1116591)

Poprawki błędów

  • Fragmenty są teraz prawidłowo niszczone podczas wyświetlania animacji wyjścia w innych fragmentach. (b/140574199)
  • Naprawiono błąd, który powodował, że funkcja Fragments wywoływała funkcję Activity.findViewById() w miejscach, w których wcześniej tego nie robiła. (Aosp/1116431)

Wersja 1.2.0-alfa03

5 września 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 i androidx.fragment:fragment-testing:1.2.0-alpha03. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

Poprawki błędów

  • Teraz FragmentContainerView prawidłowo odwraca kolejność rysowania podczas wyrzucania fragmentów z tylnego stosu. (b/139104187)
  • Naprawiono błąd polegający na tym, że w tym samym czasie była wyświetlana nieprawidłowa animacja przy jednoczesnym wybijaniu fragmentu i dodawaniu nowego. (b/111659726)
  • Przed wysłaniem onDestroyView() elementy fragmenty oczekują teraz na zakończenie przejść (oprócz animacji, które naprawiono w sekcji Fragment 1.2.0-alpha02). (b/138741697)

Wersja 1.2.0-alfa02

7 sierpnia 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 i androidx.fragment:fragment-testing:11.2.0-alpha02. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • SavedStateViewModelFactory jest teraz domyślną fabryką używaną, gdy używasz by viewModels(), by activityViewModels(), konstruktora ViewModelProvider lub ViewModelProviders.of() z Fragment. (b/135716331)
  • Domyślne animacje podczas korzystania z tych funkcji: TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE i setTransition na urządzeniu FragmentTransaction zostały zaktualizowane, aby odpowiadały animacji na urządzeniach z Androidem 10. (Aosp/1012812, aosp/1014730)

Zmiany w interfejsie API

  • Wprowadza FragmentContainerView jako zalecany kontener na potrzeby dynamicznie dodawanych fragmentów kodu, zastępując użycie FrameLayout itp., ponieważ rozwiązuje problemy z kolejnością animacji i wypełnieniem okien do fragmentów kodu. (b/37036000, aosp/985243, b/136494650)
  • Dodano statyczną metodę FragmentManager.findFragment(View) do pobierania zawierającego fragment kodu z widoku powiększonego o fragment. Rozszerzenie Kotlin jest również dostępne w języku: fragment-ktx. (Aosp/1090757)
  • W systemie FragmentTransaction dodano nowe przeciążenia zadań add() i replace(), które przyjmują Class<? extends Fragment> i opcjonalnie Bundle argumentów. Te metody wykorzystują FragmentFactory do utworzenia wystąpienia fragmentu do dodania. Do pliku fragment-ktx dodano też rozszerzenie Kotlin, które korzysta ze zmienionych typów (np.fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987)
  • Do Fragment wywołań zwrotnych cyklu życia dodano adnotacje (@MainThread). (b/127272564)
  • Interfejsy API związane z tytułem menu nawigacyjnego w FragmentTransaction i FragmentManager.BackStackEntry zostały wycofane. (b/138252944)
  • Metoda setTransitionStyle w FragmentTransaction została wycofana. (Aosp/1011537)
  • Wiele metod w FragmentManager nie jest już abstract. Sama FragmentManager pozostaje abstract i nie należy jej bezpośrednio tworzyć instancji ani rozszerzyć. Należy nadal pobierać tylko istniejącą instancję ze źródeł getSupportFragmentManager(), getChildFragmentManager() itp.

Poprawki błędów

  • Z fragmentu 1.1.0-rc04: fragmenty z prawidłowym anulowaniem przełożonych przejść zostały wyodrębnione. (b/138251858)
  • Z fragmentu 1.1.0-rc03: naprawiliśmy problem polegający na tym, że wywołanie metody postponeEnterTransition() z czasem oczekiwania więcej niż raz nie anuluje poprzednich limitów czasu oczekiwania. (b/137797118)
  • Z fragmentu 1.1.0-rc02: usunięto awarię w FragmentPagerAdapter i FragmentStatePagerAdapter podczas usuwania bieżącego elementu. (b/137209870)
  • Fragmenty czekają teraz na zakończenie animacji przed wysłaniem polecenia onDestroyView(). (b/136110528)
  • Animacje fragmentów podrzędnych i ich elementów podrzędnych są teraz prawidłowo obsługiwane podczas animowania nadrzędnego fragmentu. (b/116675313)
  • Naprawiliśmy NullPointerException w przypadku korzystania z przejścia elementów wspólnych oraz łączenia operacji „pop” i „add”. (b/120507394)
  • Dodano obejście funkcji IllegalStateException w przypadku użycia elementów FragmentPagerAdapter i FragmentStatePagerAdapter w testach Robolectric. (b/137201343)

Wersja 1.2.0-alfa01

2 lipca 2019 r.

Opublikowano androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 i androidx.fragment:fragment-testing:1.2.0-alpha01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • FragmentManager wywołuje teraz requestApplyInsets() po dołączeniu widoku fragmentu i bezpośrednio przed wywołaniem onViewCreated(), dzięki czemu widok zawsze ma prawidłowe wstawki. (b/135945162)

Poprawki błędów

  • Naprawiono błąd NullPointerException podczas wywoływania elementu FragmentTransaction, który używał właściwości setPrimaryNavigationFragment() przed replace(). (b/134673465)

Wersja 1.1.0

Wersja 1.1.0

5 września 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 i androidx.fragment:fragment-testing:1.1.0. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Ważne zmiany od wersji 1.0.0

  • fragment-testing: artefakt fragment-testing udostępnia klasę FragmentScenario do testowania fragmentu w izolacji. Więcej informacji znajdziesz w dokumentacji testowania fragmentów aplikacji.
  • FragmentFactory: możesz teraz ustawić FragmentFactory w FragmentManager, aby zarządzać tworzeniem instancji fragmentów, eliminując rygorystyczne wymagania dotyczące konstruktora bez argumentu.
  • Przedstawiciele usługi Kotlin dla obiektów ViewModel: artefakt fragment-ktx zawiera teraz 2 przedstawicieli właściwości Kotlin: by viewModels() za dostęp do modeli widoków danych powiązanych z poszczególnym fragmentem oraz by activityViewModels() do dostępu do obiektów ViewModel w zakresie aktywności.
  • Maksymalny cykl życia: możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując setMaxLifecycle() w FragmentTransaction. Zastąpiły one wycofane setUserVisibleHint(). FragmentPagerAdapter i FragmentStatePagerAdapter mają nowy konstruktor, który umożliwia przełączanie się na nowe zachowanie.
  • Konstruktor układu FragmentActivity: podklasy FragmentActivity mogą teraz wywoływać konstruktor FragmentActivity, który przyjmuje identyfikator R.layout, wskazując układ, który należy ustawić jako widok treści jako alternatywę dla wywoływania setContentView() w onCreate(). Nie zmienia to wymogu, że podklasa ma konstruktor bez argumentów.
  • Konstruktor Układ Fragmentu: podklasy Fragment mogą teraz wywoływać konstruktor w interfejsie Fragment, który przyjmuje identyfikator R.layout, wskazując układ, którego należy użyć dla tego fragmentu jako alternatywę dla zastępowania onCreateView(). Powiększony układ można skonfigurować tutaj: onViewCreated().
  • Przełóż z ustalaniem limitu czasu oczekiwania: dodano nowe przeciążenie postponeEnterTransition(), które zajmuje limit czasu.

Wersja 1.1.0-rc04

7 sierpnia 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 i androidx.fragment:fragment-testing:1.1.0-rc04. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Fragmenty prawidłowo anulują przełożone przejścia na fragmentach. (b/138251858)

Wersja 1.1.0-rc03

19 lipca 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 i androidx.fragment:fragment-testing:1.1.0-rc03. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że wywołanie funkcji postponeEnterTransition() z czasem oczekiwania więcej niż raz nie anuluje poprzednich limitów czasu oczekiwania. (b/137797118)

Wersja 1.1.0-rc02

17 lipca 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 i androidx.fragment-testing:fragment:1.1.0-rc02. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Naprawiono awarię w FragmentPagerAdapter i FragmentStatePagerAdapter podczas usuwania bieżącego elementu. (b/137209870)

Wersja 1.1.0-rc01

2 lipca 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 i androidx.fragment:fragment-testing:1.1.0-rc01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Podczas przenoszenia fragmenty adresów URL wyświetlają się teraz prawidłowo, gdy używane są operacje show() i hide(). (b/133385058)
  • Naprawiono błąd NullPointerException podczas wywoływania elementu FragmentTransaction, który używał właściwości setPrimaryNavigationFragment() przed replace(). (b/134673465)

Wersja 1.1.0-beta01

5 czerwca 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 i androidx.fragment:fragment-testing:1.1.0-beta01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Wywołania zwrotne androidx.lifecycle.Lifecycle (powiązane konkretnie z elementami STARTED, RESUMED, PAUSED, STOPPED i DESTROYED) dla zagnieżdżonych fragmentów kodu są teraz prawidłowo zagnieżdżone. (b/133497591)
  • Instancje (OnBackPressedCallback) zarejestrowane w elemencie onCreate() fragmentu mają teraz prawidłowo pierwszeństwo przed podrzędnymi obiektami FragmentManager. (b/133175997)
  • Fragmenty podrzędne nie są już animowane, gdy jest zastępowany fragment nadrzędny. (b/121017790)
  • Animacje i przejścia fragmentów z elementów są teraz ignorowane podczas korzystania z animateLayoutChanges="true", co naprawiło problem z nieprawidłowym zniszczeniem fragmentów kodu. (b/116257087)

Wersja 1.1.0-alfa09

16 maja 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 i androidx.fragment:fragment-testing:1.1.0-alpha09. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • W przypadku zmiany głównego fragmentu nawigacji fragmenty kodu otrzymują wywołanie zwrotne do nowej metody onPrimaryNavigationFragmentChanged(boolean). aosp/960857

Poprawki błędów

  • Elementy menu rozwijane przez fragment podrzędny są teraz prawidłowo usuwane po usunięciu fragmentu nadrzędnego. b/131581013

Wersja 1.1.0-alfa08

7 maja 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 i androidx.fragment:fragment-testing:1.1.0-alpha08. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Ta wersja jest niezgodna z Preferencjami od 1.1.0-alfa01 do 1.1.0-alfa04. Jeśli używasz tej wersji Fragmentów, uaktualnij Preferencje do wersji 1.1.0-alfa05.

Nowe funkcje

  • Dodano nowe przeciążenie obiektu postponeEnterTransition(). Po upływie tego czasu fragment będzie automatycznie wywoływał metodę startPostponedEnterTransition() b/120803208.

Zmiany w interfejsie API

  • Zmiana powodująca niezgodność: wycofana wcześniej metoda FragmentFactory instantiate, która pobierała metodę Bundle, została usunięta. aosp/953856
  • Zmiana powodująca niezgodność: stałe RESUME_ONLY_CURRENT_FRAGMENT i USE_SET_USER_VISIBLE_HINT w FragmentPagerAdapter i FragmentStatePagerAdapter zostały zmienione odpowiednio na BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT i BEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782

Poprawki błędów

  • Fragmenty, których cykl życia został ograniczony przez setMaxLifecycle(), nie są już wznawiane przed osiągnięciem ostatecznego stanu. b/131557151
  • Przy korzystaniu z metody setMaxLifecycle(Lifecycle.State.CREATED) widok fragmentów jest prawidłowo zniszczony. aosp/954180

Wersja 1.1.0-alfa07

25 kwietnia 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 i androidx.fragment:fragment-testing:1.1.0-alpha07. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Możesz teraz ustawić maksymalny stan cyklu życia fragmentu, wywołując setMaxLifecycle() w FragmentTransaction. Zastąpiły one wycofane setUserVisibleHint(). FragmentPagerAdapter i FragmentStatePagerAdapter mają nowy konstruktor, który umożliwia przełączanie się na nowe zachowanie. (b/129780800)

Zmiany w interfejsie API

  • Wywoływanie interfejsu moveToState(STARTED) w systemie FragmentScenario może teraz odbywać się tylko na urządzeniach z interfejsem API w wersji 24 lub nowszej. (B/129880016)

Zmiany w działaniu

  • W efekcie (b/129907905) fragmenty na stosie tylnym nie otrzymają wywołania zwrotnego onCreateView() podczas odtwarzania aktywności hostingu. Funkcja onCreateView() będzie teraz wywoływana tylko wtedy, gdy fragment stanie się widoczny (tzn. gdy stos tylny zostanie zagnieżdżony).

Poprawki błędów

  • Naprawiono błąd związany z używaniem tagu <fragment> w pliku XML i konstruktora contentLayoutId FragmentActivity lub AppCompatActivity. (b/129907905)
  • Naprawiliśmy błąd polegający na tym, że po zmianie konfiguracji fragmenty z wstecznego stosu nie były przenoszone do co najmniej CREATED, co powodowało nieprawidłowe usuwanie elementów ViewModel i przechowywanych fragmentów podrzędnych. (b/129593351)
  • Naprawiono awarię restoreSaveState spowodowaną brakiem synchronizacji zachowywanych fragmentów po zapisaniu stanu instancji. (b/130433793) (Aosp/947824)
  • Rozwiązaliśmy problemy, które powodowały, że element OnBackPressedCallback dodany z cyklem życia fragmentu nie był wywoływany, jeśli FragmentManager miał stos wsteczny. Więcej informacji znajdziesz na stronie androidx.activity 1.0.0-alpha07. (Aosp/948209)
  • Fragmenty nie wymuszają już polecenia LAYER_TYPE_HARDWARE w animacjach. Jeśli potrzebujesz animacji warstwy sprzętowej, ustaw ją jako część animacji. (b/129486478)

Wersja 1.1.0-alfa06

3 kwietnia 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 i androidx.fragment:fragment-testing:1.1.0-alpha06. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Wyjątki zgłaszane przez FragmentManager zawierają teraz nazwę fragmentu w wiadomości. (b/67759402)

Zmiany w interfejsie API

  • Fragment i FragmentActivity zawierają teraz drugi konstruktor, który przyjmuje @LayoutRes int, co zastępuje poprzednie działanie adnotacji klasy @ContentView. Ta metoda działa zarówno w modułach aplikacji, jak i bibliotece. (b/128352521)
  • Element onActivityResult() obiektu FragmentActivity jest teraz prawidłowo oznaczony jako @CallSuper. (b/127971684)
  • Metoda instantiate FragmentFactory, która przyjmuje pakiet argumentów, została wycofana. Aplikacje powinny używać nowego przeciążenia instantiate, które nie przyjmuje pakietu. (b/128836103)
  • Metody FragmentScenario mają teraz prawidłowe adnotacje @StyleRes. (Aosp/924193)
  • Interfejs FragmentTabHost został wycofany. (b/127971835)
  • Element getThemedContext() użytkownika FragmentActivity został usunięty. (Aosp/934078)

Poprawki błędów

  • Naprawiono regresję w wersji 1.1.0-alfa05, która powodowała miganie przychodzącego fragmentu na ekranie. (b/129405432)
  • Naprawiono problem utraty głównego fragmentu nawigacji po serii operacji popBackStack+replace+popBackStack. (b/124332597)
  • Naprawiono problem z używaniem konstruktorów @ContentView w aktywności podczas przywracania stanu fragmentu. (b/127313094)
  • Poprawiliśmy logikę setTargetFragment() podczas zastępowania istniejącego fragmentu docelowego fragmentem, który nie jest jeszcze dołączony do FragmentManagera. (Aosp/932156)

Wersja 1.1.0-alfa05

13 marca 2019 r.

Opublikowano androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 i androidx.fragment:fragment-testing:1.1.0-alpha05. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Wyszukiwania adnotacji @ContentView są teraz przechowywane w pamięci podręcznej (b/123709449)

Zmiany w działaniu

  • Wywołanie remove(), hide(), show(), detach() i setPrimaryNavigationFragment() z fragmentem dołączonym do innego obiektu FragmentManager powoduje teraz wystąpienie błędu IllegalStateException, a nie błędu (aosp/904301).

Poprawki błędów

  • Certyfikat onNewIntent dla: FragmentActivity jest teraz prawidłowo oznaczony etykietą @CallSuper (b/124120586)
  • Rozwiązaliśmy problem, który powodował, że właściwość onDismiss() usługi DialogFragment była wywoływana dwukrotnie podczas korzystania z getDialog().dismiss() lub getDialog().cancel() (b/126563750)

Wersja 1.1.0-alfa04

7 lutego 2019 r.

Opublikowano androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 i androidx.fragment:fragment-testing 1.1.0-alpha04.

Nowe funkcje

  • Dodaliśmy obsługę adnotacji klasy @ContentView, która pozwala wskazać plik XML układu, który należy powiększyć jako alternatywę dla zastąpienia onCreateView(). Zalecamy wyświetlanie powiązanych zadań w: onViewCreated(). (Aosp/837619)
  • fragment-testing korzysta teraz ze stabilnej wersji androidx.test:core-ktx (b/121209673)
  • Możesz teraz używać polecenia openActionBarOverflowOrOptionsMenu z elementem FragmentScenario do testowania menu opcji hostowanych fragmentów (b/121126668)

Zmiany w interfejsie API

  • Dodano metodę requireArguments(), która zwraca wartość @NonNull Bundle lub zwraca IllegalStateException (b/121196360).
  • Dodaliśmy uwagę, że nie można zastąpić atrybutów getLifecycle(), getViewLifecycleOwner() i getViewLifecycleOwnerLiveData(). W kolejnej wersji zostaną one udostępnione jako ostateczne. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (Aosp/880714)
  • Dodaliśmy uwagę, że adresu getViewModelStore() nie należy zastąpić. W kolejnej wersji zostanie ona uniezależniona od wersji. Jeśli obecnie zastępujesz tę metodę, prześlij prośbę o dodanie funkcji. (Aosp/880713)
  • Naprawiono problem ze zgodnością plików binarnych z poprzednimi wersjami kodu Fragmenty. (Aosp/887877) (Aosp/889834)

Poprawki błędów

  • Fragmenty docelowe są usuwane prawidłowo, gdy przekażesz uprawnienia null do setTargetFragment(). (Aosp/849969)
  • Rozwiązaliśmy problem, który powodował, że docelowe fragmenty były czasami niedostępne w okresie onDestroy() lub później. (b/122312935)
  • Funkcja onclose() w oknie DialogFragment jest teraz wywoływana przed onDestroy(). (Aosp/874133) (Aosp/890734)

Wersja 1.1.0-alfa03

17 grudnia 2018 r.

Nowe funkcje

  • Fragment zawiera teraz zaimplementowaną funkcję BundleSavedStateRegistryOwner i zależy od nowo udostępnionej biblioteki SavedState [aosp/824380]
  • Dodano delegata usługi by activityViewModels Kotlin, który może pobierać obiekty ViewModel powiązane z aktywnością [b/119050253]
  • Delegat właściwości by viewModels Kotlin został rozszerzony tak, aby przyjmował opcjonalną metodę lambda do pobierania parametru ViewModelStoreOwner, co umożliwia przekazywanie nadrzędnego fragmentu lub innego niestandardowego elementu ViewModelStoreOwner za pomocą kodu takiego jak val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

Zmiany w interfejsie API

  • FragmentScenario umożliwia teraz określenie motywu, na przykład Theme.AppCompat [b/119054431]. Jest to niezbędna zmiana.
  • Dodano metodę requireView(), która zwraca błąd @NonNull View lub zwraca metodę IllegalStateException [b/120241368].
  • Dodano metodę requireParentFragment(), która zwraca błąd @NonNull Fragment lub zwraca metodę IllegalStateException [b/112103783].

Poprawki błędów

  • Naprawiony wyjątek IllegalStateException: Błąd zapisu stanu b/120814739
  • Fragmenty przywracane z zapisanego stanu instancji będą teraz zawsze otrzymywać wartość Bundle różną od null [b/119794496]
  • Usunięte fragmenty nie używają już ponownie obiektu Lifecycle, jeśli został on ponownie dodany [b/118880674]

Wersja 1.1.0-alfa02

3 grudnia 2018 r.

Nowe funkcje

  • Rozszerzenia Kotlin w narzędziu FragmentScenariusz pozwalają teraz na użycie funkcji lambda do budowy fragmentu kodu zamiast przekazania instancji FragmentFactory. (Aosp/812913)

Poprawki błędów

  • Naprawiono wyjątek IllegalStateException w przypadku używania zagnieżdżonych fragmentów na stosie wstecznym (b/119256498)
  • Naprawiono awarię, która występowała podczas korzystania z FragmentScenario.recreate() z FragmentFactory (aosp/820540)
  • Naprawiono problem, który powodował, że docelowe fragmenty nie były dostępne po usunięciu fragmentu (aosp/807634)

Wersja 1.1.0-alfa01

5 listopada 2018 r.

Oto pierwsza wersja artefaktu fragment-testing i FragmentScenario, która została utworzona na podstawie interfejsów API androidx.test:core. Więcej informacji znajdziesz w dokumentacji testowania fragmentów.

Nowe funkcje

  • Nowa klasa FragmentScenariusz do testowania fragmentów w izolacji.
  • Możesz teraz ustawić FragmentFactory w dowolnym elemencie FragmentManager, aby kontrolować sposób tworzenia instancji nowych instancji Fragment.
  • Dodaliśmy nowego delegata właściwości by viewModels() Kotlin do pobierania modeli ViewModel z fragmentu kodu.
  • Oczekujące zdarzenia wejściowe (takie jak kliknięcia) są teraz anulowane w elemencie onStop() fragmentu.

Zmiany w interfejsie API

  • Znacznie rozwinięto adnotacje wartości null w obrębie interfejsu Fragment API.

Poprawki błędów

  • Napraw błąd, który powodował, że operacje fragmentu kodu w LiveData kończyły się niepowodzeniem (b/77944637)

Znane problemy

  • Po usunięciu fragmentów z Menedżera fragmentów nie można uzyskać dostępu do docelowych fragmentów kodu.
  • fragment-testing zależy od androidx.test:core:1.0.0-beta01 zamiast poprawnego androidx.test:core:1.0.0.