Fragment

Segmentieren Sie Ihre App in mehrere unabhängige Bildschirme, die in einer Aktivität gehostet werden.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
3. April 2024 1.6.2 1.7.0-rc01 - 1.8.0-alpha01

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von Fragment müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Groovig

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")
}

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.8

Version 1.8.0-alpha01

3. April 2024

androidx.fragment:fragment-*:1.8.0-alpha01 wird freigegeben. Version 1.8.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Mit dem neuen AndroidFragment Composable können Sie der Hierarchie „Compose“ über den Namen der Fragmentklasse Fragmente hinzufügen. Es übernimmt automatisch das Speichern und Wiederherstellen des Status des Fragments. Dies kann als direkter Ersatz für die AndroidViewBinding-Composable verwendet werden (b/312895363, Icf841).

Änderungen an der Dokumentation

  • Die Dokumentation für die OnBackStackChangedListener APIs wurde aktualisiert, um anzugeben, wann sie aufgerufen werden und wie sie verwendet werden sollen. (I0bfd9)

Abhängigkeitsupdate

Version 1.7

Version 1.7.0-rc01

3. April 2024

androidx.fragment:fragment-*:1.7.0-rc01 wird freigegeben. Version 1.7.0-rc01 enthält diese Commits.

Abhängigkeitsupdate

Version 1.7.0-beta01

20. März 2024

androidx.fragment:fragment-*:1.7.0-beta01 wird freigegeben. Version 1.7.0-beta01 enthält diese Commits.

API-Änderungen

  • FragmentHostCallback wird jetzt in Kotlin geschrieben, sodass die Null-Zulässigkeit des generischen Hosttyps mit der Null-Zulässigkeit des Rückgabetyps von onGetHost() übereinstimmt. (I40af5)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem ein Fragment nie gelöscht wurde, wenn eine Geste mit der Option „Zurück“ mit Commit für ein Fragment, das sich nicht in einem Container befindet, nie gelöscht wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand verschoben. (Ida0d9)
  • Ein Problem in Fragmenten wurde behoben, bei dem eingehende Übergänge durch eine vorausschauende Zurück-Geste die Einstiegsansicht zerstören und einen leeren Bildschirm blieben. (Id3f22, b/319531491)

Version 1.7.0-alpha10

7. Februar 2024

androidx.fragment:fragment-*:1.7.0-alpha10 wird freigegeben. Version 1.7.0-alpha10 enthält diese Commits.

Fehlerkorrekturen

  • Das bekannte Problem in der vorherigen Fragment-Version wurde behoben, bei dem Fragmente bei Verwendung der Predictive Back-Unterstützung für Animator oder AndroidX-Übergang ein NullPointerException von handleOnBackProgressed ausgegeben haben, wenn kein FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. (I7c835)

Version 1.7.0-alpha09

24. Januar 2024

androidx.fragment:fragment-*:1.7.0-alpha09 wird freigegeben. Version 1.7.0-alpha09 enthält diese Commits.

Artefakt zum Erstellen von Fragmenten

Ein neues fragment-compose-Artefakt wurde erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig Compose-basierten Architektur wechseln.

Die erste in diesem neuen Artefakt verfügbare Funktion ist eine content-Erweiterungsmethode für Fragment, die die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird eine ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt. (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)
    }
}

Neue Funktionen

  • FragmentManager.OnBackStackChangedListener() stellt jetzt die onBackStackChangeProgressed() und die onBackStackChangeCancelled() für den Empfang vorausgesagter Fortschrittsereignisse bzw. abgebrochene Ereignisse bereit. 214b87

Bekanntes Problem

  • Wenn Fragment die Unterstützung für den prädiktiven Back-up für Animator oder AndroidX Transition verwendet, gibt Fragmente ein NullPointerException von handleOnBackProgressed aus, wenn noch nie FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. Sie können den Absturz umgehen, indem Sie einen Listener manuell hinzufügen. Eine Lösung wird in der nächsten Version von Fragmente behoben werden.

Version 1.7.0-alpha08

10. Januar 2024

androidx.fragment:fragment-*:1.7.0-alpha08 wird freigegeben. Version 1.7.0-alpha08 enthält diese Commits.

Aufräumen

Version 1.7.0-alpha07

29. November 2023

androidx.fragment:fragment-*:1.7.0-alpha07 wird freigegeben. Version 1.7.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Ein NullPointerException wurde behoben, das dadurch verursacht wurde, dass ein Übergang für ein gemeinsames Element festgelegt wurde, bei dem auch keine Eingabe/ExitTransition festgelegt wurde. (I8472b)
  • Aus Fragment 1.6.2: Wenn das Fragment eines FragmentContainerView aufgebläht wird, sind jetzt dessen Status wie FragmentManager, Host und ID im onInflate-Callback zugänglich. (I1e44c, b/307427423)
  • Aus Fragment 1.6.2: Wenn du mit clearBackStack einen Satz von Fragmenten entfernst, werden jetzt die ViewModel des verschachtelten Fragments gelöscht, sobald die ViewModels des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)

Version 1.7.0-alpha06

4. Oktober 2023

androidx.fragment:fragment-*:1.7.0-alpha06 wird freigegeben. Version 1.7.0-alpha06 enthält diese Commits.

Abhängigkeitsaktualisierung

  • Fragmente wurden aktualisiert und hängen jetzt von der neuen animateToStart API ab, die in Umstellung 1.5.0-alpha04 hinzugefügt wurde.

Version 1.7.0-alpha05

20. September 2023

androidx.fragment:fragment-*:1.7.0-alpha05 wird freigegeben. Version 1.7.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Fragmente bieten jetzt Unterstützung für die Predictive-Zurück-Funktion, wenn Androidx-Übergänge verwendet werden. So können Sie die Zurück-Geste verwenden, um mit Ihrer benutzerdefinierten Androidx-Übergang zum vorherigen Fragment zu springen, bevor Sie sich entscheiden, ob Sie die Transaktion mit der abgeschlossenen Geste entweder per Commit durchführen oder abbrechen möchten. Zum Aktivieren dieser Funktion ist die 1.5.0-alpha03-Version erforderlich. (Ib49b4, b/285175724)

Bekannte Probleme

  • Es gibt derzeit ein Problem, bei dem der Übergang nicht ausgeführt wird, nachdem Sie eine Zurück-Touch-Geste mit einem Übergang einmal abgebrochen haben und der Wechsel beim nächsten Start nicht ausgeführt wird. Dies führt zu einem leeren Bildschirm. Ursache könnte ein Problem in der Transition-Bibliothek sein. (b/300157785) Wenn dieses Problem auftritt, melden Sie ein Problem mit Fragment und verwenden Sie dabei ein Beispielprojekt, das das Problem reproduziert. Du kannst die automatische Vervollständigung deaktivieren, indem du in den onCreate() deiner Aktivitäten FragmentManager.enabledPredictiveBack(false) verwendest.

Version 1.7.0-alpha04

6. September 2023

androidx.fragment:fragment-*:1.7.0-alpha04 wird freigegeben. Version 1.7.0-alpha04 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem eine vorausschauende Zurück-Geste abgebrochen wurde, bei dem Fragmente nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
  • Es wurden Regressionen behoben, bei denen Animationen mit Übergängen ausgeführt werden durften. (I59f36)
  • Bei der Verwendung von Predictive Back mit Fragmenten wurde ein Problem behoben, bei dem der Versuch, zweimal schnell hintereinander auf das vorletzte Fragment auf dem Back-Stack zurückzukehren, einen Absturz verursachte. (Ifa1a4)

Version 1.7.0-alpha03

23. August 2023

androidx.fragment:fragment-*:1.7.0-alpha03 wird freigegeben. Version 1.7.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der vorausschauenden „Zurück“-Funktion dazu führte, dass das erste Fragment im Back-Stack des Fragmentmanagers übersprungen wurde und die Aktivität beendet wurde, wenn das System über die Bedienung über 3 Schaltflächen oder die vorausschauende „Zurück“-Touch-Geste beendet wurde. (I0664b, b/295231788)

Version 1.7.0-alpha02

9. August 2023

androidx.fragment:fragment-*:1.7.0-alpha02 wird freigegeben. Version 1.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie Fragmente mit prädiktiven Rückgesten von API 34 verwenden und ein Übergangssystem verwenden, das die Suche (Animations, Transitions) oder überhaupt keine Übergänge unterstützt, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Aktion „Zurück“ ausgeführt wird. (I8100c)

Version 1.7.0-alpha01

7. Juni 2023

androidx.fragment:fragment-*:1.7.0-alpha01 wird freigegeben. Diese Version wird in einem internen Zweig entwickelt.

Neue Funktionen

  • Fragmente bieten jetzt Unterstützung für In-App-Vorhersagen, wenn Animator verwendet wird. So kannst du die Zurück-Geste verwenden, um das vorherige Fragment mit deinem benutzerdefinierten Animator zu sehen, bevor du dich entscheidest, die Transaktion entweder mit der abgeschlossenen Geste per Commit durchzuführen oder abzubrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie das experimentelle enablePredictiveBack() verwenden und false übergeben.

Version 1.6

Version 1.6.2

1. November 2023

androidx.fragment:fragment-*:1.6.2 wird freigegeben. Version 1.6.2 enthält diese Commits.

Fehlerkorrekturen

  • Wenn das Fragment eines FragmentContainerView aufgebläht ist, sind jetzt seine Status wie FragmentManager, Host und ID im onInflate-Callback zugänglich. (I1e44c, b/307427423)
  • Wenn Sie clearBackStack verwenden, um einen Satz von Fragmenten zu entfernen, werden jetzt die ViewModel eines verschachtelten Fragments gelöscht, sobald die ViewModels des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)

Version 1.6.1

26. Juli 2023

androidx.fragment:fragment-*:1.6.1 wird freigegeben. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der gespeicherte Status, der beim Beenden der Aktivität gespeichert, aber nicht gelöscht wurde, fälschlicherweise im Cache gespeichert wurde, selbst nachdem die Fragmentinstanz zurück in den Status RESUMED verschoben wurde. Dies würde dazu führen, dass der im Cache gespeicherte Status wiederverwendet wird, wenn sich die Fragmentinstanz auf dem Back-Stack befindet, wenn das Fragment über die Multiple Back Stacks API gespeichert und wiederhergestellt wurde. (I71288, b/246289075)

Abhängigkeitsaktualisierung

  • Das Fragment hängt jetzt von Activity 1.7.2 ab. Damit wird ein Problem behoben, bei dem Kotlin-Nutzer ComponentDialog nicht ohne eine explizite Abhängigkeit von Aktivität erweitern konnten. (b/287509323)

Version 1.6.0

7. Juni 2023

androidx.fragment:fragment-*:1.6.0 wird freigegeben. Version 1.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.5.0

  • Der gespeicherte Status von Fragments wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierte Parcelable-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt, der jetzt immer in einem Bundle gespeichert wird. Dadurch kann genau ermittelt werden, woher der Status eines Fragments stammt.
  • Die FragmentManager.OnBackStackChangedListener-Schnittstelle wurde um zwei zusätzliche Callbacks für onBackStackChangeStarted und onBackStackChangeCommitted erweitert, die mit jedem Fragment aufgerufen werden, bevor sie dem Back-Stack des Fragments hinzugefügt oder daraus entfernt werden, bzw. direkt nach dem Commit der Transaktion.
  • FragmentStrictMode hat ein neues WrongNestedHierarchyViolation hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Fragments verschachtelt, aber nicht zur childFragmentManager des übergeordneten Fragments hinzugefügt wird.
  • Die Fragment- und FragmentManager-APIs, die ein Intent- oder IntentSender-Objekt verwenden, sind jetzt ordnungsgemäß mit @NonNull annotiert, um die Übergabe eines Nullwerts als Nullwert zu verhindern, die immer sofort die jeweiligen Android-Framework-APIs abstürzen, an die diese Methoden aufrufen.
  • DialogFragment bietet jetzt über die requireComponentDialog() API Zugriff auf die zugrunde liegende ComponentDialog.
  • Das Fragment hängt jetzt vom Lebenszyklus 2.6.1 ab.
  • Das Fragment hängt jetzt von SavedState 1.2.1 ab.
  • Das Fragment hängt jetzt von ProfileInstaller 1.3.0 ab.
  • Das Artefakt fragment-testing-manifest trennt die Manifesteinträge von den restlichen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:

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

    Dadurch werden Konflikte aufgrund einer Versionsabweichung zwischen fragment-testing und androidx.test vermieden

Version 1.6.0-rc01

10. Mai 2023

androidx.fragment:fragment-*:1.6.0-rc01 wird freigegeben. Version 1.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem ActivityResults mit dem falschen Anfragecode gesendet wurden, wenn mehrere startActivityForResult-Anfragen hintereinander gestellt wurden. (If0b9d, b/249519359)
  • Es wurde ein Problem behoben, bei dem onBackStackChangeListener-Callbacks für Transaktionen gesendet wurden, die den Back-Stack nicht geändert hatten, wenn sie mit Transaktionen gemischt wurden, die dies auch tun. (I0eb5c, b/279306628)

Version 1.6.0-beta01

19. April 2023

androidx.fragment:fragment-*:1.6.0-beta01 wird freigegeben. Version 1.6.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie postponeEnterTransition mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzt wird, führt dies nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)
  • Die neuen Callbacks onBackStackChangeStarted und onBackStackChangeCommitted senden ein Fragment jetzt nur einmal, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)

Version 1.6.0-alpha09

5. April 2023

androidx.fragment:fragment-*:1.6.0-alpha09 wird freigegeben. Version 1.6.0-alpha09 enthält diese Commits.

API-Änderungen

  • DialogFragment bietet jetzt über die requireComponentDialog() API Zugriff auf die zugrunde liegende ComponentDialog. (I022e3, b/234274777)
  • Die APIs des Fragments commitNow(), executePendingTransactions() und popBackStackImmediate() wurden mit @MainThread annotiert. Das bedeutet, dass jetzt alle Build-Fehler ausgeben, wenn sie nicht aus dem Hauptthread aufgerufen werden, anstatt auf einen Fehler während der Laufzeit zu warten. (Ic9665, b/236538905)

Fehlerkorrekturen

  • Es wurde ein Fehler in FragmentManager behoben, bei dem das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668)
  • OnBackStackChangedListener-onBackStackChangeStarted- und onBackStackChangeCommitted-Callbacks werden jetzt nur ausgeführt, wenn der FragmentManager-Back-Stack geändert wird. (I66055, b/274788957)

Version 1.6.0-alpha08

22. März 2023

androidx.fragment:fragment-*:1.6.0-alpha08 wird freigegeben. Version 1.6.0-alpha08 enthält diese Commits.

Verhaltensänderung

  • Das Timing des OnBackStackChangedListener.onBackStackChangeCommited-Callbacks wurde so angepasst, dass es vor der Ausführung von Fragmentvorgängen ausgeführt wird. Dadurch wird sichergestellt, dass an den Callback niemals ein getrenntes Fragment übergeben wird. (I66a76, b/273568280)

Fehlerkorrekturen

  • Aus Fragment 1.5.6: Ein Problem wurde behoben, bei dem das Aufrufen von clearFragmentResultListener in einem setFragmentResultListener nicht funktioniert hat, wenn Lifecycle bereits STARTED war und bereits ein Ergebnis verfügbar war. (If7458)

Aktualisierungen von Abhängigkeiten

Version 1.6.0-alpha07

8. März 2023

androidx.fragment:fragment-*:1.6.0-alpha07 wird freigegeben. Version 1.6.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Aus Fragment 1.5.6: Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob Menüelemente hinzugefügt wurden, das Menü der Aktivität ungültig machte. (50f098, b/244336571)

Version 1.6.0-alpha06

22. Februar 2023

androidx.fragment:fragment-*:1.6.0-alpha06 wird freigegeben. Version 1.6.0-alpha06 enthält diese Commits.

Verhaltensänderung

  • Der neue onBackStackChangedStarted-Callback auf dem onBackStackChangedListener von FragmentManager wird jetzt ausgeführt, bevor Fragmente in ihre Zielzustände verschoben werden. (I34726)

Version 1.6.0-alpha05

8. Februar 2023

androidx.fragment:fragment-*:1.6.0-alpha05 wird freigegeben. Version 1.6.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Die FragmentManager.OnBackStackChagnedListener-Schnittstelle bietet jetzt zwei zusätzliche Callbacks, onBackStackChangeStarted und onBackStackChangeCommitted, die zusätzliche Informationen ermöglichen und steuern, wann Back-Stack-Änderungen in FragmentManager erfolgen. (Ib7ce5, b/238686802)

API-Änderungen

  • Die Fragment- und FragmentManager-APIs, die ein Intent- oder IntentSender-Objekt verwenden, sind jetzt ordnungsgemäß mit @NonNull annotiert, um die Übergabe eines Nullwerts als Nullwert zu verhindern, die immer sofort die entsprechenden Android-Framework-APIs abstürzen, bei denen diese Methoden aufrufen. (I06fd4)

Version 1.6.0-alpha04

7. Dezember 2022

androidx.fragment:fragment-*:1.6.0-alpha04 wird freigegeben. Version 1.6.0-alpha04 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode hat ein neues WrongNestedHierarchyViolation hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Fragments verschachtelt, aber nicht zur childFragmentManager des übergeordneten Fragments hinzugefügt wird. (I72521, b/249299268)

Änderungen des Verhaltens

  • Fragmente stellen jetzt ihren SavedStateRegistry-Status vor onAttach() wieder her, damit sie in allen Lebenszyklusmethoden verfügbar sind. (I1e2b1)

API-Änderungen

  • Das Artefakt fragment-testing-manifest trennt die Manifesteinträge von den restlichen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing und androidx.test vermieden.(I8e534, b/128612536)

Fehlerkorrekturen

  • Ab Fragment 1.5.5: Fragmente speichern den Status ViewModel nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung. (I10d2b, b/253546214)

Version 1.6.0-alpha03

5. Oktober 2022

androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 und androidx.fragment:fragment-testing:1.6.0-alpha03 wurden veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.

API-Änderungen

  • Klassen, die DialogFragment erweitern, müssen jetzt Super in ihren onDismiss()-Überschreibungen aufrufen. (I14798, b/238928865)

Fehlerkorrekturen

  • Regressionen behoben, die durch die Integration der neuen Callback-Schnittstellen des Anbieters (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) verursacht wurden, damit Fragmente immer die richtigen Callbacks erhalten. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

Version 1.6.0-alpha02

24. August 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 und androidx.fragment:fragment-testing:1.6.0-alpha02 wurden veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Aus Fragment 1.5.2: Ein Problem wurde behoben, bei dem die gleichzeitige Ausführung einer popBackStack()- und einer replace()-Transaktion dazu führen konnte, dass beendete Fragmente die falschen Animation/Animator ausgeführt haben. (Ib1c07, b/214835303)

Version 1.6.0-alpha01

27. Juli 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 und androidx.fragment:fragment-testing:1.6.0-alpha01 wurden veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.

Änderungen des Verhaltens

  • Der gespeicherte Status von Fragments wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierte Parcelable-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt, der jetzt immer in einem Bundle gespeichert wird. Dadurch kann genau ermittelt werden, woher der Status eines Fragments stammt. (b/207158202)

Fehlerkorrekturen

  • Aus Fragment 1.5.1: Korrigiere eine Regression in DialogFragmentCallbacksDetector, bei der die Verwendung der Lint-Version mit AGP 7.4 zum Absturz von Lint führen würde. (b/237567009)

Abhängigkeitsupdate

Version 1.5

Version 1.5.7

19. April 2023

androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 und androidx.fragment:fragment-testing:1.5.7 wurden veröffentlicht. Version 1.5.7 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie postponeEnterTransition mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzt wird, führt dies nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)

Version 1.5.6

22. März 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 und androidx.fragment:fragment-testing:1.5.6 wurden veröffentlicht. Version 1.5.6 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob Menüelemente hinzugefügt wurden, das Menü der Aktivität ungültig machte. (50f098, b/244336571)
  • Es wurde ein Problem behoben, bei dem clearFragmentResultListener in einer setFragmentResultListener nicht aufgerufen werden konnte, wenn die Lifecycle bereits STARTED war und ein Ergebnis bereits verfügbar war. (If7458)

Version 1.5.5

7. Dezember 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 und androidx.fragment:fragment-testing:1.5.5 wurden veröffentlicht. Version 1.5.5 enthält diese Commits.

Fehlerkorrekturen

  • Fragmente speichern den Status ViewModel nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung. (I10d2b, b/253546214)

Version 1.5.4

24. Oktober 2022

androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 und androidx.fragment:fragment-testing:1.5.4 wurden veröffentlicht. Version 1.5.4 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem bei Verwendung einer benutzerdefinierten FragmentController mit einem Host, der keine Callback-Schnittstelle des Anbieters (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) implementiert und dessen eingestellte Weiterleitungsfunktion aufgerufen wird, nicht an untergeordnete Fragmente weitergeleitet wurde. (I9b380)

Version 1.5.3

21. September 2022

androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 und androidx.fragment:fragment-testing:1.5.3 wurden veröffentlicht. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Back-Stack onMultiWindowModeChanged()-, onPictureInPictureModeChanged()-, onLowMemory()- und onConfigurationChanged()-Callbacks erhielten. (I34581, I8dfe6, b/242570955)
  • Verschachtelte untergeordnete Fragmente erhalten keine mehrfachen onMultiWindowModeChanged()-, onPictureInPictureModeChanged()-, onLowMemory()- oder onConfigurationChanged()-Callbacks. (I690b3, Id0096, If9d6b, I2cba2)

Version 1.5.2

10. August 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 und androidx.fragment:fragment-testing:1.5.2 wurden veröffentlicht. Version 1.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die gleichzeitige Ausführung einer popBackStack()- und einer replace()-Transaktion dazu führen konnte, dass beendete Fragmente die falschen Animation/Animator ausgeführt haben. (Ib1c07, b/214835303)

Version 1.5.1

27. Juli 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 und androidx.fragment:fragment-testing:1.5.1 wurden veröffentlicht. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Behebung einer Regression im DialogFragmentCallbacksDetector, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führen würde. (b/237567009)

Abhängigkeitsupdate

Version 1.5.0

29. Juni 2022

androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 und androidx.fragment:fragment-testing:1.5.0 wurden veröffentlicht. Version 1.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.4.0

  • CreationExtras-Integration: Fragment bietet jetzt die Möglichkeit, eine zustandslose ViewModelProvider.Factory über die CreationExtras des Lebenszyklus 2.5.0 bereitzustellen.
  • Integration des Komponentendialogs: DialogFragment verwendet jetzt ComponentDialog über die Aktivität 1.5.0 als von onCreateDialog() zurückgegebenes Standarddialogfeld.
  • Refaktorierung des gespeicherten Instanzstatus: Die Art und Weise, wie die Fragmente ihren Instanzstatus speichern, wurden geändert. So lässt sich eindeutig feststellen, welcher Status im Fragment gespeichert wurde und aus welcher Quelle der Status stammt. Zu den aktuellen Änderungen gehören:
    • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einem Bundle statt direkt in einem benutzerdefinierten Parcelable.
    • Noch nicht übermittelte Ergebnisse, die über die Fragment Result APIs festgelegt wurden, werden jetzt getrennt vom internen Status von FragmentManager gespeichert.
    • Der jedem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status des FragmentManager gespeichert. So können Sie die Menge des mit einem einzelnen Fragment verknüpften gespeicherten Status mit den eindeutigen IDs korrelieren, die im Debug-Logging von Fragment vorhanden sind.

Weitere Änderungen

  • FragmentStrictMode bietet jetzt die Möglichkeit, dass private Drittanbieter-Fragmente bestimmte Strafen für Verstöße umgehen, indem allowViolation() mit dem Klassennamen verwendet wird.
  • Die Fragment APIs zum Bereitstellen eines Menüs für die ActionBar Ihrer Aktivität wurden eingestellt. Die in Aktivität 1.4.0 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste, gleichwertige API-Oberfläche, die von Fragmenten verwendet werden sollte.

Version 1.5.0-rc01

11. Mai 2022

androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 und androidx.fragment:fragment-testing:1.5.0-rc01 wurden veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Refaktorierung gespeicherter Instanzstatus

  • Der jedem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status des FragmentManager gespeichert. So können Sie die Menge des mit einem einzelnen Fragment verknüpften gespeicherten Status mit den eindeutigen IDs korrelieren, die im Debug-Logging für Fragmente vorhanden sind. (a153e0, b/207158202)

Version 1.5.0-beta01

20. April 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 und androidx.fragment:fragment-testing:1.5.0-beta01 wurden veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • DialogFragment hat eine neue dismissNow-Methode hinzugefügt, die commitNow für Parität mit der showNow-Funktion verwendet. Beachte, dass die Dialog dadurch nicht sofort geschlossen wird, sondern nur der Status von FragmentManager synchron aktualisiert wird. (I15c36, b/72644830)

Refaktorierung gespeicherter Instanzstatus

  • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einem Bundle statt direkt in einem benutzerdefinierten Parcelable. Dies ist der erste Schritt, um zusätzliche Transparenz zu bieten, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)
  • Noch nicht übermittelte Ergebnisse, die über die Fragment Result APIs festgelegt wurden, werden jetzt getrennt vom internen Status von FragmentManager gespeichert. So erhalten Sie einen besseren Überblick darüber, welche Ergebnisse als Teil des Status der gespeicherten Instanz gespeichert werden. (I6ea12, b/207158202)

Version 1.5.0-alpha05

6. April 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 und androidx.fragment:fragment-testing:1.5.0-alpha05 wurden veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.

API-Änderungen

Version 1.5.0-alpha04

23. März 2022

androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 und androidx.fragment:fragment-testing:1.5.0-alpha04 wurden veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Fragment APIs zum Bereitstellen eines Menüs für das ActionBar deiner Aktivität wurden eingestellt, da sie dein Fragment eng mit deiner Aktivität verknüpfen und nicht isoliert getestet werden können. Die in Aktivität 1.4.0-alpha01 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste, gleichwertige API-Oberfläche, die von Fragmenten verwendet werden sollte. (I50a59, I20758)

Fehlerkorrekturen

  • SavedStateViewFactory unterstützt jetzt die Verwendung von CreationExtras, auch wenn es mit einem SavedStateRegistryOwner initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)

Version 1.5.0-alpha03

23. Februar 2022

androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 und androidx.fragment:fragment-testing:1.5.0-alpha03 wurden veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • Sie können jetzt CreationExtras an die Funktionen by viewModels() und by activityViewModels() übergeben. (Ibefe7, b/217601110)

Änderungen des Verhaltens

Version 1.5.0-alpha02

9. Februar 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 und androidx.fragment:fragment-testing:1.5.0-alpha02 wurden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode bietet jetzt die Möglichkeit, dass private Drittanbieter-Fragmente bestimmte Strafen für Verstöße umgehen, indem allowViolation() mit dem Klassennamen verwendet wird. (I8f678)

Version 1.5.0-alpha01

26. Januar 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 und androidx.fragment:fragment-testing:1.5.0-alpha01 wurden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

Fehlerkorrekturen

  • Aus Fragment 1.4.1: FragmentContainerView löst keine illegale Statusausnahme aus, wenn von XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)
  • Aus Fragment 1.4.1: Bei Verwendung einer benutzerdefinierten Lambda-Funktion ownerProducer mit der Lazy-Funktion by viewModels() wird jetzt der defaultViewModelProviderFactory dieses Eigentümers verwendet, wenn kein benutzerdefinierter ViewModelProvider.Factory-Wert angegeben ist, anstatt immer die Factory des Fragments zu verwenden. (I56170, b/214106513)
  • Ein Absturz wurde behoben, der beim ersten Zugriff auf ein ViewModel über einen registerForActivityResult()-Callback eines Fragment aufgetreten ist. (Iea2b3)

Version 1.4

Version 1.4.1

26. Januar 2022

androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 und androidx.fragment:fragment-testing:1.4.1 wurden veröffentlicht. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • FragmentContainerView löst keine unzulässigen Statusausnahmen mehr aus, wenn von XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)
  • Bei Verwendung einer benutzerdefinierten Lambda-Funktion ownerProducer mit der Lazy-Funktion by viewModels() wird jetzt der defaultViewModelProviderFactory von diesem Eigentümer verwendet, wenn keine benutzerdefinierte ViewModelProvider.Factory angegeben ist, anstatt immer die Fabrik des Fragments zu verwenden. (I56170, b/214106513)

Version 1.4.0

17. November 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 und androidx.fragment:fragment-testing:1.4.0 wurden veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre von Ihnen abhängigen Anwendungen oder Bibliotheken keine eingestellten Fragment APIs aufrufen. Wenn ein Verstoß erkannt wird, kannst du eine Lognachricht ausgeben, deinen eigenen benutzerdefinierten Listener auslösen oder deine App abstürzen. Die FragmentStrictMode.Policy, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann mit der neuen Methode setStrictModePolicy() für eine FragmentManager festgelegt werden. Diese Richtlinie gilt für die FragmentManager und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Siehe StrictMode für Fragmente.
  • FragmentContainerView bietet jetzt eine getFragment()-Methode, die das zuletzt dem Container hinzugefügte Fragment zurückgibt. Dabei wird dieselbe Logik wie bei findFragmentById() mit der ID des FragmentContainerView verwendet, aber der Aufruf kann verkettet werden.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • In FragmentScenario ist jetzt Closeable implementiert, sodass du es mit der Methode use von Kotlin oder mit try-with-resources verwenden kannst.

  • Wir haben FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} hinzugefügt, um anzugeben, ob die Standardanimation zum Aktivitätsübergang aus Ihrem Design unter „Fragmentübergang“ aktiviert werden soll.

  • Die experimentelle API von FragmentManager.enableNewStateManager(boolean) wurde entfernt und der neue State Manager ist jetzt die einzige verfügbare Option.

Mehrere Back-Stacks

FragmentManager verwaltet einen Back-Stack, der aus Fragmenttransaktionen besteht, für die addToBackStack() verwendet wurde. Auf diese Weise können Sie diese Transaktionen in einem Pop-up abrufen und zum vorherigen Zustand zurückkehren, wobei Sie die Mechanismen für Status mit Fragmenten speichern verwenden, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

Dieser Release erweitert diese Mechanismen durch drei neue FragmentManager APIs: saveBackStack(String name), restoreBackStack(String name) und clearBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status aller Fragmente zu speichern, die in diesen Transaktionen hinzugefügt wurden. So können Sie diese Transaktionen und ihre Fragmente später wiederherstellen, wobei ihr Status intakt ist. Auf diese Weise können Sie effektiv zwischen mehreren Back-Stacks wechseln, indem Sie den aktuellen Back-Stack speichern und einen gespeicherten Back Stack wiederherstellen.

saveBackStack() funktioniert ähnlich wie popBackStack(), da er asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen bestimmten Namen zurückgesetzt werden und alle hinzugefügten Fragmente gelöscht und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:

  • saveBackStack() ist immer inklusive.
  • Im Gegensatz zu popBackStack(), das alle Transaktionen im Back-Stack aussortiert, wenn der angegebene Name nicht im Back-Stack gefunden wird oder wenn ein Nullname angegeben wird, geschieht bei saveBackStack() nichts, wenn Sie bisher noch keine Fragmenttransaktion mit addToBackStack() mit genau diesem Namen ausgeführt haben, der nicht null ist.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und der Status wiederhergestellt wird und alle ViewModel-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden und onCleared() nicht für sie aufgerufen wird.

Die Fragmenttransaktionen, die mit saveBackStack() verwendet werden können, müssen bestimmte Kriterien erfüllen:

  • Jede Fragmenttransaktion muss setReorderingAllowed(true) verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • Der Satz an Transaktionen muss in sich geschlossen sein (d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieser Gruppe von Transaktionen verweisen), damit sie später wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in einem sitzungsspezifischen Satz an untergeordneten Fragmenten enthalten, damit FragmentManager nach dem Speichern des Back Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.

Ähnlich wie bei „saveBackStack()“, „restoreBackStack()“ und „clearBackStack()“, mit denen ein zuvor gespeicherter Back-Stack wiederhergestellt oder ein zuvor gespeicherter Backstack gelöscht werden kann, geschieht nichts, wenn Sie nicht bereits saveBackStack() mit demselben Namen aufgerufen haben.

Weitere Informationen finden Sie unter Mehrere Back-Stacks: Im Detail.

Version 1.4.0-rc01

3. November 2021

androidx.fragment:fragment:1.4.0-rc01 ohne Änderungen gegenüber Fragment 1.4.0-beta01 veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.

Version 1.4.0-beta01

27. Oktober 2021

androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 und androidx.fragment:fragment-testing:1.4.0-beta01 wurden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Übergeordnete Fragmente leiten jetzt onHiddenChanged() nach unten in der gesamten Hierarchie weiter, bevor ihr eigener Callback gestartet wird. (Iedc20, b/77504618)
  • Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit geöffneter Tastatur zu einem Fragment mit einer Recycler-Ansicht wechseln. (I8b842, b/196852211)
  • DialogFragment verwendet jetzt setReorderingAllowed(true) für alle Transaktionen, die erstellt werden, wenn Sie show(), showNow() oder dismiss() aufrufen. (Ie2c14)
  • Die extrem lange Lint-Warnung von DetachAndAttachFragmentInSameFragmentTransaction wurde auf DetachAndAttachSameFragment gekürzt. (e9eca3)

Version 1.4.0-alpha10

29. September 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 und androidx.fragment:fragment-testing:1.4.0-alpha10 wurden veröffentlicht. Version 1.4.0-alpha10 enthält diese Commits.

Fuss

  • Die Lint-Warnung DetachAndAttachFragmentInSameFragmentTransaction wurde hinzugefügt, um zu erkennen, dass detach() und attach() in derselben Fragment in derselben FragmentTransaction aufgerufen werden. Da sich diese ergänzenden Vorgänge in derselben Transaktion gegenseitig abbrechen, müssen sie in separate Transaktionen aufgeteilt werden, um eigentlich etwas tun zu können. (aosp/1832956, b/200867930)
  • Der Lint-Fehler FragmentAddMenuProvider zum Korrigieren der Nutzung des Fragmentlebenszyklus im Lebenszyklus der Fragmentansicht wurde hinzugefügt, wenn die addMenuProvider API von MenuHost verwendet wird. (aosp/1830457, b/200326272)

Aktualisierungen der Dokumentation

  • Die Mitteilung zur Einstellung von APIs, die jetzt von den Activity Result APIs verarbeitet wird (startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions und onRequestPermissionsResult), wurde um weitere Details erweitert. (cce80f)
  • Die Mitteilung zur Einstellung von onActivityCreated() für Fragment und DialogFragment wurde um mehr Details erweitert. 224 dB4

Version 1.4.0-alpha09

15. September 2021

androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 und androidx.fragment:fragment-testing:1.4.0-alpha09 wurden veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt clearBackStack(name) aufrufen, um jeden zuvor mit saveBackStack(name) gespeicherten Status zu löschen. (I70cd7)

API-Änderungen

  • Die Klasse FragmentContainerView wurde in Kotlin neu geschrieben, damit die Funktion getFragment die Null-Zulässigkeit ordnungsgemäß respektiert. (If694a, b/189629145)
  • FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506).

Fehlerkorrekturen

  • Der Status eines Fragments, das mit setReorderingAllowed(true) hinzugefügt und dann sofort vor dem Ausführen ausstehender Transaktionen entfernt wurde, wurde behoben. (I8ccb8)

Version 1.4.0-alpha08

1. September 2021

androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 und androidx.fragment:fragment-testing:1.4.0-alpha08 wurden veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • Die UseRequireInsteadOfGet-Lint-Prüfung für den Umgang mit redundanten Klammern wurde verbessert. (I2d865)
  • Die UseGetLayoutInflater-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu handhaben. (Ie5423)

Version 1.4.0-alpha07

18. August 2021

androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 und androidx.fragment:fragment-testing:1.4.0-alpha07 werden ohne wichtige Änderungen veröffentlicht. Version 1.4.0-alpha07 enthält diese Commits.

Version 1.4.0-alpha06

4. August 2021

androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 und androidx.fragment:fragment-testing:1.4.0-alpha06 wurden veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem mit mehreren Backstacks behoben, bei dem schnell zwischen Back-Stacks gewechselt wurde, die beim Wiederherstellen eines FragmentTransaction als IllegalStateException oder als zweite Kopie eines Fragments angezeigt wurden. (I9039f)
  • Ein Problem wurde behoben, bei dem FragmentManager eine Kopie des Zustands beibehalten konnte, der zuvor über saveBackStack() gespeichert wurde, selbst nachdem dieser Status wiederhergestellt wurde. (Ied212)
  • Die Methode dismissAllowingStateLoss() von DialogFragment stürzt nicht mehr ab, wenn Sie sie aufrufen, nachdem der Status gespeichert wurde, wenn das DialogFragment speziell über die Methode show(FragmentTransaction, String) hinzugefügt wird. (I84422)

Version 1.4.0-alpha05

21. Juli 2021

androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 und androidx.fragment:fragment-testing:1.4.0-alpha05 wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Von Fragment 1.3.6: Die Ansicht des Fragments ist jetzt korrekt auf GONE festgelegt, wenn hide() verwendet wird, wenn in der Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • Aus Fragment 1.3.6: FragmentActivity entsperrt jetzt immer den gespeicherten Status als erster Vorgang in Lebenszyklus-Callbacks, den er überschreibt. (I6db7a)

Abhängigkeitsupdate

Version 1.4.0-alpha04

30. Juni 2021

androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 und androidx.fragment:fragment-testing:1.4.0-alpha04 wurden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

  • FragmentManager verwendet jetzt SavedStateRegistry im Hintergrund, um den Status zu speichern. Die Methoden saveAllState() und restoreSavedState() wurden in FragmentController ebenfalls eingestellt. Wenn du FragmentController zum Hosten von Fragmenten außerhalb von FragmentActivity verwendest, solltest du SavedStateRegistryOwner von deinem FragmentHostCallbacks implementieren. (Iba68e, b/188734238)

Fehlerkorrekturen

  • Der Aufruf von saveBackStack() zur Unterstützung mehrerer Backstacks schlug fehl, wenn er gleichzeitig mit dem Ausführen eines FragmentTransaction-Objekts mit replace() ausgeführt wurde. Dieses Problem wurde behoben. (I73137)
  • Ein NullPointerException wurde behoben, das nach manueller Wiederherstellung eines gespeicherten Back-Stacks mit mehreren Transaktionen bei Verwendung der restoreBackStack() API zur Unterstützung mehrerer Back-Stacks aufgetreten ist. Außerdem wurde ein Problem behoben, bei dem setReorderingAllowed(true) nicht auf alle Transaktionen geprüft wurde. (I8c593)
  • Ein Problem wurde behoben, bei dem FragmentManager den zuvor gespeicherten Status von Fragmenten fälschlicherweise wiederhergestellt hat, selbst nachdem diese Fragmente aus dem FragmentManager entfernt wurden, wodurch der gespeicherte Status im Laufe der Zeit kontinuierlich wächst. (I1fb8e)

Version 1.4.0-alpha03

16. Juni 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 und androidx.fragment:fragment-testing:1.4.0-alpha03 wurden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Alle Fragment StrictMode-Klassen Violation wurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638)
    • FragmentTagUsageViolation enthält jetzt eine detailliertere Fehlermeldung zum Container des übergeordneten Containers, dem das Fragment hinzugefügt worden wäre. (Ic33a7)
    • WrongFragmentContainerViolation zeigt jetzt eine detailliertere Fehlermeldung an, in der der Container angegeben ist, zu dem das Fragment hinzugefügt wurde. (Ib55f8)
    • Die Anwendungsfallklassen für TargetFragmentUsageViolation enthalten jetzt detailliertere Fehlermeldungen, um das den Verstoß verursachte Fragment und alle anderen enthaltenen Informationen einzubeziehen. ICC6ac
    • Die Klassen, die RetainInstanceUsageViolation erweitern, haben jetzt detailliertere Fehlermeldungen, die das den Verstoß verursachende Fragment enthalten. (I6bd55)
    • FragmentReuseViolation zeigt jetzt eine detailliertere Fehlermeldung an, die die vorherige ID des Fragments enthält. (I28ce2)
    • SetUserVisibleHintViolation zeigt jetzt eine detailliertere Fehlermeldung an, die den für den Nutzer sichtbaren Hinweis enthält. (Ib2d5f)

Änderungen des Verhaltens

  • Die Einschränkung für das Aufrufen von fitsSystemWindows auf FragmentContainerView wurde wiederhergestellt. Dadurch wird deine App nicht mehr abstürzen. (6b8ddd, b/190622202)

Fehlerkorrekturen

  • Aus Fragment 1.3.5: Eine Regression der Übergänge geteilter Elemente, die in Fragment 1.3.4 von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten die Übergangsgruppen jetzt korrekt (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background). Freigegebene Elemente lösen dann keine IndexOutOfBoundsExceptions mehr aus. (I16484, b/188679569, b/188969304)
  • FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein zu entfernendes Fragment auszublenden. (I573dd, b/183634730)
  • Die Lint-Prüfung OnCreateDialogIncorrectCallback kommt nicht mehr zum Absturz, wenn eine Variable auf oberster Ebene ausgewertet wird. (0a9efa, b/189967522)

Version 1.4.0-alpha02

2. Juni 2021

androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 und androidx.fragment:fragment-testing:1.4.0-alpha02 wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode protokolliert jetzt immer Verstöße, wenn das Logging über FragmentManager aktiviert ist, unabhängig von der aktuell verwendeten Richtlinie im strikten Modus. (I02df6, b/187872638)
  • FragmentStrictMode unterstützt jetzt den Ausschluss bestimmter Fragment-Klassen vom strengen Modus Violations, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)

  • Die Klasse FragmentStrictMode Violation wurde erweitert, um basierend auf jedem Verstoß Strukturinformationen hinzuzufügen. So können Sie genau prüfen, wodurch der Verstoß verursacht wurde, zusammen mit dem fragmentierten Fragment (If5118, b/187871150). Jede Violation enthält Folgendes:

    • WrongFragmentContainerViolation enthält jetzt die ViewGroup, der das Fragment hinzugefügt werden sollte. (I83c75, b/187871150)
    • TargetFragmentUsageViolation wurde zu SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation und GetTargetFragmentRequestCodeUsageViolation erweitert, wobei SetTargetFragmentUsageViolation das Zielfragment und den Anfragecode enthält. (I741b4, b/187871150)
    • SetUserVisibleHintViolation enthält jetzt den booleschen Wert, der an setUserVisibleHint() übergeben wurde. (I00585, b/187871150)
    • FragmentTagUsageViolation enthält jetzt die ViewGroup, in die das <fragment>-Tag versucht hat, ein Fragment aufzublähen (I5dbbc, b/187871150).
    • FragmentReuseViolation enthält jetzt die eindeutige ID der vorherigen Instanz des Fragment, der den Verstoß verursacht hat. (I0544d, b/187871150)
    • RetainInstanceUsageViolation ist jetzt abstrakt und hat zwei abgeleitete Klassen, SetRetainInstanceUsageViolation und GetRetainInstanceUsageViolation, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)

Änderungen des Verhaltens

  • FragmentContainerView gibt jetzt eine Ausnahme aus, wenn versucht wird, das fitsSystemWindow-Attribut programmatisch oder über XML zu ändern. Einsätze sollten in der Ansicht jedes einzelnen Fragments verarbeitet werden. (Ie6651, b/187304502)

Version 1.4.0-alpha01

18. Mai 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 und androidx.fragment:fragment-testing:1.4.0-alpha01 wurden veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView bietet jetzt eine getFragment()-Methode, die das zuletzt dem Container hinzugefügte Fragment zurückgibt. Dabei wird dieselbe Logik wie bei findFragmentById() mit der ID des FragmentContainerView verwendet, aber der Aufruf kann verkettet werden. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Wir haben FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} hinzugefügt, um anzugeben, ob die Standardanimation zum Aktivitätsübergang aus Ihrem Design unter „Fragmentübergang“ aktiviert werden soll. (I46652)

Mehrere Back-Stacks

FragmentManager verwaltet einen Back-Stack, der aus Fragmenttransaktionen besteht, für die addToBackStack() verwendet wurde. Auf diese Weise können Sie diese Transaktionen in einem Pop-up abrufen und zum vorherigen Zustand zurückkehren, wobei Sie die Mechanismen für Status mit Fragmenten speichern verwenden, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

Mit dieser Version werden diese Mechanismen durch zwei neue FragmentManager APIs erweitert: saveBackStack(String name) und restoreBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status aller Fragmente zu speichern, die in diesen Transaktionen hinzugefügt wurden. So können Sie diese Transaktionen und ihre Fragmente später wiederherstellen, wobei ihr Status intakt ist. Auf diese Weise können Sie effektiv zwischen mehreren Back-Stacks wechseln, indem Sie den aktuellen Back-Stack speichern und einen gespeicherten Back Stack wiederherstellen.

saveBackStack() funktioniert ähnlich wie popBackStack(), da er asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen bestimmten Namen zurückgesetzt werden und alle hinzugefügten Fragmente gelöscht und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:

  • saveBackStack() ist immer inklusive.
  • Im Gegensatz zu popBackStack(), das alle Transaktionen im Back-Stack aussortiert, wenn der angegebene Name nicht im Back-Stack gefunden wird oder wenn ein Nullname angegeben wird, geschieht bei saveBackStack() nichts, wenn Sie bisher noch keine Fragmenttransaktion mit addToBackStack() mit genau diesem Namen ausgeführt haben, der nicht null ist.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und der Status wiederhergestellt wird und alle ViewModel-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden und onCleared() nicht für sie aufgerufen wird.

Die Fragmenttransaktionen, die mit saveBackStack() verwendet werden können, müssen bestimmte Kriterien erfüllen:

  • Jede Fragmenttransaktion muss setReorderingAllowed(true) verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • Der Satz an Transaktionen muss in sich geschlossen sein (d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieser Gruppe von Transaktionen verweisen), damit sie später wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in einem sitzungsspezifischen Satz an untergeordneten Fragmenten enthalten, damit FragmentManager nach dem Speichern des Back Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.

Ähnlich wie saveBackStack() geschieht bei restoreBackStack() nichts, wenn du saveBackStack() zuvor nicht mit demselben Namen aufgerufen hast. (b/80029773)

Fragment StrictMode

Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre von Ihnen abhängigen Anwendungen oder Bibliotheken keine eingestellten Fragment APIs aufrufen. Wenn ein Verstoß erkannt wird, kannst du eine Lognachricht ausgeben, deinen eigenen benutzerdefinierten Listener auslösen oder deine App abstürzen. Die FragmentStrictMode.Policy, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann mit der neuen Methode setStrictModePolicy() für eine FragmentManager festgelegt werden. Diese Richtlinie gilt für die FragmentManager und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (#123, #131, #150, b/143774122)

  • detectFragmentReuse() erkennt, ob eine zuvor entfernte Fragment-Instanz einer FragmentManager wieder hinzugefügt wird. Sie sollten niemals mit einer Fragment-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie gelöscht und aus einem FragmentManager entfernt wurde. (#142, b/153738653)
  • detectFragmentTagUsage() erkennt, ob das <fragment>-Tag in der Layout-XML-Datei verwendet wird. Wenn Sie Fragmente als Teil Ihres Layouts aufblähen, sollten Sie immer FragmentContainerView verwenden. (Nr. 141, b/153738235)
  • detectWrongFragmentContainer() erkennt, wenn Sie einem Container ein Fragment hinzufügen, das kein FragmentContainerView ist. Sie sollten in Ihrem Layout immer FragmentContainerView als Container für Fragmente verwenden. (Nr. 146, b/181137036)
  • detectRetainInstanceUsage() erkennt, wenn Sie die verworfenen APIs setRetainInstance() oder getRetainInstance() verwenden. (#140, b/153737954)
  • detectSetUserVisibleHint() erkennt, wenn Sie die verworfene setUserVisibleHint() API verwenden. (#136, b/153738974)
  • detectTargetFragmentUsage() erkennt, wenn Sie die verworfenen APIs setTargetFragment(), getTargetFragment() oder getTargetRequestCode() verwenden. (#139, b/153737745)

API-Änderungen

Neue Lint-Prüfungen

  • Die UseGetLayoutInflater-Lint-Prüfung warnt jetzt, wenn LayoutInflater.from(Context) innerhalb eines DialogFragment-Elements verwendet wird. Sie sollten immer die getLayoutInflater()-Methode des Dialogfragments verwenden, um ein geeignetes LayoutInflater-Element zu erhalten. (#156, b/170781346)
  • Die DialogFragmentCallbacksDetector-Lint-Prüfung warnt jetzt beim Aufrufen von setOnCancelListener oder setOnDismissListener in der onCreateDialog()-Methode einer DialogFragment – diese Listener gehören zur DialogFragment selbst und Sie sollten onCancel() und onDismiss() überschreiben, um diese Callbacks zu erhalten. (#171, b/181780047, b/187524311)

Fehlerkorrekturen

  • Aus Fragment 1.3.4: Eine Regression wurde behoben, die in Fragment 1.3.3 eingeführt wurde, wenn die ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder die Jetpack Compose-Methode von viewModel() in einem Fragment verwendet wurde. In diesen Anwendungsfällen wird das von Ihrem Fragment bereitgestellte ViewModelProvider.Factory jetzt korrekt verwendet, wenn es getDefaultViewModelProviderFactory() überschreibt (wie @AndroidEntryPoint-annotierte Fragmente bei Verwendung von „Hilt“). Wenn Sie diese Methode nicht überschreiben, wird ein SavedStateViewModelFactory als Standard-Factory erstellt, der seinen Zustand zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Ab Fragment 1.3.4: Wenn FragmentContainerView in API 29 verwendet wird, werden Einsätze nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben. (I1bb78, b/186012452)
  • Ab Fragment 1.3.4: Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Ab Fragment 1.3.4: Wenn für eine ViewGroup ein gemeinsamer Elementübergang vorgenommen wird und transitionGroup für die ViewGroup auf „false“ gesetzt ist, erfolgt der Übergang jetzt korrekt. (I99675)

Externer Beitrag

Version 1.3

Version 1.3.6

21. Juli 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 und androidx.fragment:fragment-testing:1.3.6 wurden veröffentlicht. Version 1.3.6 enthält diese Commits.

Fehlerkorrekturen

  • Aus Fragment 1.4.0-alpha03: FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein zu entfernendes Fragment auszublenden. (I573dd, b/183634730)
  • Die Ansicht des Fragments ist jetzt korrekt auf GONE festgelegt, wenn hide() verwendet wird und für die Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • FragmentActivity entsperrt nun immer den gespeicherten Status als erster Vorgang in Lebenszyklus-Callbacks, der überschrieben wird. (I6db7a)

Abhängigkeitsupdate

Version 1.3.5

16. Juni 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 und androidx.fragment:fragment-testing:1.3.5 wurden veröffentlicht. Version 1.3.5 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression bei Übergängen geteilter Elemente, die in Fragment 1.3.4 von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten die Übergangsgruppen jetzt korrekt (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background). Freigegebene Elemente lösen dann keine IndexOutOfBoundsExceptions mehr aus. (I16484, b/188679569, b/188969304)

Version 1.3.4

18. Mai 2021

androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 und androidx.fragment:fragment-testing:1.3.4 wurden veröffentlicht. Version 1.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression wurde behoben, die in Fragment 1.3.3 eingeführt wurde, wenn die ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder die Jetpack Compose-Methode von viewModel() in einem Fragment bei Verwendung von Hilt verwendet wurde. In diesen Anwendungsfällen wird das von deinem Fragment bereitgestellte ViewModelProvider.Factory jetzt korrekt verwendet, wenn getDefaultViewModelProviderFactory() überschrieben wird (wie es bei @AndroidEntryPoint-Anmerkungen der Fall ist). Wenn Sie diese Methode nicht überschreiben, wird ein SavedStateViewModelFactory als Standard-Factory erstellt, der seinen Zustand zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Wenn FragmentContainerView in API 29 verwendet wird, werden Eingaben nicht mehr unbegrenzt gesendet, wodurch Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben werden. (I1bb78, b/186012452)
  • Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Wenn für eine ViewGroup ein gemeinsamer Elementübergang vorgenommen wird und transitionGroup für die ViewGroup auf „false“ gesetzt ist, erfolgt der Übergang jetzt korrekt. (I99675)

Version 1.3.3

21. April 2021

androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 und androidx.fragment:fragment-testing:1.3.3 wurden veröffentlicht. Version 1.3.3 enthält diese Commits.

Neue Funktionen

  • SavedStateViewModelFactory funktioniert jetzt in Verbindung mit dem SavedStateRegistryOwner, das von ViewTreeSavedStateRegistryOwner.get() mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)

Fehlerkorrekturen

  • Eine in Fragment 1.3.2 eingeführte Regression wurde behoben, die dazu führte, dass popEnter-Animationen nicht ausgeführt wurden, wenn ein FragmentTransaction gesendet wurde, das eine setPrimaryNavFragment-Operation enthielt, wie z. B. die von NavHostFragment verwendeten. (I38c87, b/183877426)
  • FragmentContainerView sorgt nun dafür, dass jede Fragment einen neuen Satz WindowInsets abschickt, sodass jedes Fragment die Einfügungen jetzt unabhängig nutzen kann. (I63f68, b/172153900)
  • DialogFragment verarbeitet jetzt korrekt Fälle, in denen ein untergeordnetes Fragment einem Container hinzugefügt wird, der dieselbe ID wie ein Container in Ihrer benutzerdefinierten Dialog-Klasse hat. Dadurch werden Probleme mit der Ansichtshierarchie bei der Wiederverwendung von IDs behoben, die intern von Dialogfeldern wie BottomSheetDialog verwendet werden. (Ie6279, b/180021387)
  • Mit FragmentManager.dump() wird das erste Fragment in der Liste der aktiven Fragmente jetzt korrekt eingerückt. (If5c33, b/183705451)

Neue Fehlerkorrekturen in State Manager

  • Der neue Fragmentstatus-Manager handhabt jetzt Exit-Übergänge mit Versteckvorgängen ordnungsgemäß. (I9e4de, b/184830265)

Version 1.3.2

24. März 2021

androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 und androidx.fragment:fragment-testing:1.3.2 wurden veröffentlicht. Version 1.3.2 enthält diese Commits.

Neue Fehlerkorrekturen in State Manager

  • Wenn Sie sowohl popBackStack()- als auch commit()-Vorgänge zusammen ausführen, wird jetzt mit dem letzten Vorgang die Richtung für alle Animationen festgelegt, anstatt einige Pop-Animationen und einige neue Animationen auszuführen. (I7072e, b/181142246)
  • Bei Ansichten innerhalb einer Hierarchie eines gemeinsamen Elements wird der Übergangsname nicht mehr gelöscht, wenn ein Übergang zwischen Elementen erfolgt. (I4d4a6, b/179934757)

Aktualisierungen von Abhängigkeiten

  • Das Fragment hängt jetzt von Activity 1.2.2 ab. Dadurch wird ein Problem mit der InvalidFragmentVersionForActivityResult-Lint-Prüfung von Aktivität bei Verwendung von Fragment 1.3.1 oder höher behoben.
  • Das Fragment hängt jetzt von Lebenszyklus 2.3.1 ab.

Version 1.3.1

10. März 2021

androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 und androidx.fragment:fragment-testing:1.3.1 wurden veröffentlicht. Version 1.3.1 enthält diese Commits.

Neue Funktionen

  • Dialoge in DialogFragment können jetzt über DecorView auf ViewTree-Inhaber zugreifen, sodass DialogFragment mit ComposeView verwendet werden kann. (Ib9290, b/180691023)

Fehlerkorrekturen

  • Fragmente, die mit FragmentContainerView in eine bereits RESUMED-Aktivität aufgebläht wurden, werden nach einer Konfigurationsänderung jetzt korrekt angezeigt. (Ie14c8, b/180538371)
  • Es gibt kein zusätzliches } am Ende des Fragments toString() (I54705, b/177761088).
  • Überschriebene Methoden in FragmentActivity übernehmen jetzt korrekt die Basismethode javaDoc (I736ce, b/139548782).
  • Die Parameterdokumentation für setFragmentResult und setFragmentResultListener wurde aktualisiert, um zu berücksichtigen, dass keine Nullwerte mehr akzeptiert werden (I990ba, b/178348386).

Neue Fehlerkorrekturen in State Manager

  • Ein durch mFocusedView verursachtes Speicherleck in Fragmenten wurde behoben (Ib4e9e, b/179925887).
  • Fragmente rufen jetzt ordnungsgemäß onCreateOptionsMenu auf, wenn Transaktionen zum Ein-/Ausblenden verwendet werden (I8bce8, b/180255554).
  • Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen jetzt korrekt RESUMED (Ic11e6, b/180825150).
  • Fragmente, die mit dem <fragment>-Tag aufgebläht wurden, gelangen jetzt immer zu RESUMED (I452ac, (I9fa49).

Aktualisierungen von Abhängigkeiten

Version 1.3.0

10. Februar 2021

androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 und androidx.fragment:fragment-testing:1.3.0 wurden veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Neuer State Manager: Durch eine umfassende Überarbeitung der internen Strukturen von FragmentManager wurden zahlreiche Probleme in Bezug auf die Weiterleitung von Lebenszyklus-Ereignissen, Animationen und Übergängen sowie die Handhabung verschobener Fragmente behoben.
  • Integration der Activity Result API: Die in Aktivität 1.2.0 eingeführte ActivityResultRegistry API wird nun unterstützt, um startActivityForResult()+onActivityResult()- und requestPermissions()+onRequestPermissionsResult()-Abläufe zu verarbeiten, ohne die Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen.

    • Diese Version behebt eine Reihe von Problemen im Zusammenhang mit ungültigen Anfragecodes und der Versendung von Berechtigungsanfragen, die verhindern, dass die Activity Result API bei früheren Versionen von FragmentActivity funktioniert. Sie müssen ein Upgrade auf Fragment 1.3.0 durchführen, um die Activity Result APIs in einem FragmentActivity oder AppCompatActivity verwenden zu können.
  • Fragment Result API: Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf FragmentManager wurde hinzugefügt. Dies funktioniert für hierarchische Fragmente (über-/untergeordnete), DialogFragments und Fragmente in der Navigation und stellt sicher, dass Ergebnisse nur an Ihr Fragment gesendet werden, solange es mindestens STARTED ist. Die Ziel-Fragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Siehe Ergebnisse mithilfe der Fragment Result API abrufen.

  • FragmentOnAttachListener: Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Eine neue FragmentOnAttachListener wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren von onAttachFragment() für separate, testbare Listener und das Hinzufügen eines Listeners zu anderen FragmentManagern als Ihrem direkten untergeordneten FragmentManager.

  • FragmentScenario-Verbesserungen: Die FragmentScenario-Klasse aus dem fragment-testing-Artefakt wurde in Kotlin neu geschrieben und hat eine Reihe von Verbesserungen erhalten:

    • FragmentScenario verwendet jetzt setMaxLifecycle() zur Implementierung von moveToState(). Dadurch wird ein konsistentes Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt.
    • FragmentScenario unterstützt jetzt das Festlegen einer anfänglichen Lifecycle.State, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu jeder Lifecycle.State gewechselt wird.
    • Es gibt jetzt eine Alternative zur FragmentScenario API von onFragment in Form der Kotlin-Reified-Erweiterungsmethode withFragment, mit der ein Wert zurückgegeben werden kann. Insbesondere werden die im jeweiligen Block ausgelösten Ausnahmen wiederholt.
  • ViewTree-Unterstützung: Fragment unterstützt jetzt die ViewTreeLifecycleOwner.get(View)-, ViewTreeViewModelStoreOwner.get(View)- und ViewTreeSavedStateRegistryOwner-APIs, die in Lebenszyklus 2.3.0 und SavedState 1.1.0 hinzugefügt wurden. Dadurch wird das Fragment als ViewModelStoreOwner und ein SavedStateRegistryOwner und LifecycleOwner zurückgegeben, das mit dem Ansichtslebenszyklus des Fragments verknüpft ist, wenn ein View innerhalb eines Fragment verwendet wird.

  • Änderungen an der TRANSIT_-Animation: Für die Standardeffekte des Fragments, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE, wird jetzt Animator anstelle von Animation verwendet. Die zum Erstellen dieser Animatoren verwendeten Ressourcen sind jetzt privat.

  • Einstellung von setRetainInstance(): Die Methode setRetainInstance() für Fragmente wurde verworfen. Mit der Einführung von ViewModels steht Entwicklern eine spezielle API zur Beibehaltung des Status zur Verfügung, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Dies ermöglicht Entwicklern, ein normales, nicht beibehaltenes Fragment zu verwenden und den spezifischen Status, den sie beibehalten möchten, separat zu halten. Dadurch wird eine gemeinsame Quelle von Datenlecks vermieden und gleichzeitig die nützlichen Eigenschaften einer einzelnen Erstellung und des Löschens des beibehaltenen Status beibehalten (nämlich der Konstruktor des ViewModel- und des onCleared()-Callbacks, den es erhält).

  • Einstellung des ViewPager 1-Adapters: Mit der Veröffentlichung von ViewPager2 1.0.0 wurden die Klassen FragmentPagerAdapter und FragmentStatePagerAdapter für die Interaktion mit ViewPager eingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren.

Version 1.3.0-rc02

27. Januar 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 und androidx.fragment:fragment-testing:1.3.0-rc02 wurden veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem ein übergeordnetes DialogFragment-Element nach einer Konfigurationsänderung über einem untergeordneten DialogFragment angezeigt wurde. Fragmente untergeordneter Dialoge werden jetzt immer über einem übergeordneten Dialogfragment angezeigt. (I30806, b/177439520)
  • Ein Problem wurde behoben, bei dem ein hide-Vorgang mit einem Animation dazu führte, dass das Fragment zum Ausblenden am Ende der Animation blinkte. (I57e22, b/175417675)
  • Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen RESUMED jetzt korrekt. (I1fc1d, b/177154873)

Neue Fehlerkorrekturen in State Manager

  • Die Ansicht Lifecycle des Fragments verarbeitet jetzt Fälle, in denen die Ansicht des Fragments gelöscht wird, bevor das Lifecycle CREATED erreicht. Ausnahmen mit dem Hinweis „kein Ereignis von INITIALIZED“ werden vermieden. (eda2bd, b/176138645)
  • Fragmente, die ein Animator verwenden, werden jetzt in der richtigen Reihenfolge angezeigt, wenn FragmentContainerView verwendet wird. (Id9aa3, b/176089197)

Version 1.3.0-rc01

16. Dezember 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 und androidx.fragment:fragment-testing:1.3.0-rc01 wurden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • onPrepareOptionsMenu() folgt jetzt derselben Logik wie onCreateOptionsMenu() und wird nicht mehr aufgerufen, wenn ein übergeordnetes Fragment setMenuVisibility(false) aufruft. (Id7de8, b/173203654)

Neue Fehlerkorrekturen in State Manager

  • Ein Leak und ein visuelles Artefakt wurden behoben, das beim Hinzufügen eines Fragments mit einem Animation zu einem FragmentContainerView und anschließendes Unterbrechen dieser Ergänzung mit einem Pop-Vorgang behoben wurde. (I952d8)
  • Ein Problem wurde behoben, bei dem die Ansicht des Fragments in der Ansichtshierarchie blieb, wenn sie während der Methoden onCreate() oder onViewCreated() ersetzt wurde. (I8a7d5)
  • Der Fokus wird jetzt korrekt in den Stammansichten der Fragmente wiederhergestellt, wenn sie fortgesetzt werden. (Ifc84b)
  • Wenn Pop- und Ersetzungsvorgänge in derselben Fragment-Transaktion kombiniert werden, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691).

Version 1.3.0-beta02

2. Dezember 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 und androidx.fragment:fragment-testing:1.3.0-beta02 wurden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

Neue Funktionen

  • FragmentScenario wurde vollständig in Kotlin konvertiert, wobei die Quell- und Binärkompatibilität über die Nutzung der funktionalen Schnittstellen von Kotlin 1.4 für FragmentAction aufrechterhalten wurde. (I19d31)

Änderungen des Verhaltens

  • FragmentContainerViews, die ein Fragment nicht mit dem Attribut class oder android:name aufblähen, können jetzt außerhalb eines FragmentActivity verwendet werden. (Id4397, b/172266337)
  • Beim Versuch, den maximalen Lebenszyklus eines Fragments auf DESTROYED festzulegen, wird jetzt ein IllegalArgumentException ausgegeben (Ie7651, b/170765622).
  • Beim Initialisieren eines FragmentSzenarios mit dem Status DESTROYED wird jetzt ein IllegalArgumentException ausgelöst (I73590, b/170765622).

Neue Fehlerkorrekturen in State Manager

  • Die Ansicht erreichte nicht ihren endgültigen Zustand, wenn ein Fragmentübergang unterbrochen wurde, bei dem Animator oder eine der TRANSIT_FRAGMENT_-Optionen verwendet wurde. Dieses Problem wurde behoben. (I92426, b/169874632)
  • Es wurde ein Problem behoben, bei dem Fragmente mit einem verlassenen Animation nicht richtig gelöscht wurden. (I83d65)
  • Wenn Sie Fragmente beenden, deren Effekte umgekehrt sind, werden sie jetzt korrekt abgebrochen und mit dem richtigen Effekt neu gestartet. (I62226, b/167092035)
  • Es wurde ein Problem behoben, bei dem der Animator-Exit eines hide()-Elements nicht ausgeführt wurde. (Id7ffe)
  • Fragmente werden jetzt korrekt angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
  • Bei Fragmenten, die während einer Animation ihre fokussierte Ansicht entfernen, wird nicht mehr versucht, den Fokus auf die losgelöste Ansicht wiederherzustellen, sobald sie RESUMED erreicht haben (I38c65, b/172925703).

Externer Beitrag

  • FragmentFactory speichert Fragmentklassen jetzt separat für verschiedene ClassLoader-Instanzen im Cache. Danke, Simon Schiller! (#87, b/113886460)

Version 1.3.0-beta01

1. Oktober 2020

androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 und androidx.fragment:fragment-testing:1.3.0-beta01 wurden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Neue Funktionen

  • setMaxLifecycle() unterstützt jetzt das Festlegen des Status Lifecycle auf INITIALIZING, solange das Fragment nicht nach CREATED verschoben wurde. (b/159662173)

API-Änderungen

Änderungen des Verhaltens

  • Fragment-Ressourcendateien wurden korrekt als privat gekennzeichnet. (aosp/1425237)

Fehlerkorrekturen

  • Fragmente, die mit dem <fragment>-Tag aufgebläht wurden, warten jetzt, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie zu STARTED (I02f4c) verschoben werden.
  • Fragmente, die sichtbar sind, und dann von setMaxLifecycle() bis CREATED, führen jetzt ihre Exit-Effekte korrekt aus. (b/165822335)
  • Das Entfernen eines getrennten Fragments, das nicht zum Back Stack hinzugefügt wurde, verursacht kein Speicherleck mehr. Mit freundlicher Genehmigung von Nicklas Ansman Giertz! (b/166489383)
  • Aktive Fragmente haben jetzt immer eine FragmentManager ungleich null und Fragmente mit einer FragmentManager ungleich null werden immer als aktiv angesehen. (aosp/1422346)
  • Für die Standardeffekte des Fragments, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE, wird jetzt Animator anstelle von Animation verwendet. (b/166155034)

Neue Fehlerkorrekturen in State Manager

  • Fragmente können jetzt richtig den Fokusstatus der Ansicht von rechts vor dem Start der Animation wiederherstellen. (IC256)
  • Fragmente, die nur einen gemeinsamen Elementübergang haben, vervollständigen ihre Spezialeffekte jetzt ordnungsgemäß. Das heißt, sie werden tatsächlich in ihren endgültigen Zustand verschoben (Iaebc7, b/166658128).
  • Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie gelöscht werden. (Id5876)
  • Der neue Statusmanager entfernt nun konsequent die verlassene Fragmentansicht, bevor die eingegebene hinzugefügt wird. (I41a6e)
  • Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie also die Ansicht eines eingehenden Fragments auf INVISIBLE vor Beginn der Animation festlegen, bleibt es tatsächlich unsichtbar. (b/164481490)
  • Fragmente haben jetzt Vorrang vor Animators Animations, was bedeutet, dass ein Fragment mit beiden nur das Animator ausführt und das Animation ignoriert. (b/167579557)
  • Der neue Status-Manager führt nicht mehr dazu, dass Fragmente beim Eingeben von Animationen blinken. (b/163084315)

Bekanntes Problem

Wenn Sie beim Verwenden des neuen Statusmanagers die Taste „Zurück“ während eines Spezialeffekts drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt, sodass ein leerer Bildschirm angezeigt wird. (b/167259187, b/167092035, b/168442830)

Version 1.3.0-alpha08

19. August 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 und androidx.fragment:fragment-testing:1.3.0-alpha08 wurden veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.

Neuer State Manager

Diese Version umfasst eine umfassende Refaktorierung der internen Statusverwaltung von FragmentManager, die sich auf die Absendung von Lebenszyklusmethoden, Animationen und Übergänge sowie die Handhabung verschobener Transaktionen auswirkt. Dies ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost Fragmente: Interne Elemente neu erstellen. (b/139536619 und b/147749580)

  • Mit einer experimentellen API in FragmentManager.enableNewStateManager(boolean) kann gesteuert werden, ob FragmentManager den neuen Statusmanager verwendet. (I7b6ee)

Die folgenden Probleme werden nur bei Verwendung des neuen Statusmanagers behoben:

  • Das vorherige Fragment eines replace-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580)
  • Fragmente verhindern jetzt mehrere konkurrierende Animationen auf denselben Fragmenten. Dadurch werden Fälle vermieden, in denen ein Animation alle Transition-Effekte überschreibt oder ein Animator und ein Transition für ein einzelnes Fragment beide ausführen würden. (b/149569323)
  • enterTransition und exitTranstion aller ein- und aussteigender Fragmente werden jetzt ausgeführt und nicht mehr nur das letzte eingegebene und das erste abgehende Fragment. (b/149344150)
  • Verschobene Fragmente bleiben nicht mehr im Status CREATED hängen, sondern werden mit anderen Fragmenten nach STARTED verschoben. (b/129035555)
  • Ein Problem wurde behoben, bei dem FragmentManager Vorgänge in einer falschen Reihenfolge ausführte, wenn eine verschobene neu geordnete Transaktion und eine nicht neu geordnete Transaktion kombiniert wurden. (b/147297731)
  • Das gleichzeitige Löschen mehrerer Fragmente führt nicht mehr dazu, dass Zwischenfragmente beim Verschieben von Fragmenten vorübergehend sichtbar sind. (b/37140383)
  • FragmentManager gibt jetzt die korrekten Fragmente zurück, wenn findFragmentById() oder findFragmentByTag() innerhalb des onAttachFragment()-Callbacks aufgerufen wird. (b/153082833)
  • Fragmente rufen nicht mehr onCreateView() bei Fragmenten auf, die zerstört werden, wenn das Fragment, das sie ersetzt, verschoben wird. (b/143915710)
  • In der Fehlermeldung beim Versuch, Framework-Transition- und AndroidX-Transition-Instanzen zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang angegeben. (b/155574969)

Änderungen des Verhaltens

  • Sie können jetzt launch() für ein ActivityResultLauncher in der Lebenszyklusmethode onCreate() eines Fragments aufrufen. (b/161464278)
  • Wenn registerForActivityResult() nach onCreate() aufgerufen wird, wird jetzt eine Ausnahme ausgegeben, die angibt, dass dies nicht zulässig ist. Außerdem können nach einer Konfigurationsänderung keine Ergebnisse ausgegeben werden. (b/162255449)
  • FragmentActivity verwendet jetzt die in Aktivität 1.2.0-alpha08 eingeführte OnContextAvailableListener API, um den Status von FragmentManager wiederherzustellen. Alle Listener, die zu Unterklassen von FragmentActivity hinzugefügt wurden, werden nach diesem Listener ausgeführt. (I513da)

Fehlerkorrekturen

  • ActivityOptions, die bei Verwendung von startIntentSenderForResult() übergeben wurden, werden jetzt berücksichtigt. (b/162247961)

Bekanntes Problem

  • Wenn Sie bei Verwendung des neuen Statusmanagers die Sichtbarkeit der Stammansicht des Fragments direkt nach onViewCreated() und vor onResume() festlegen, wird die von Ihnen festgelegte Sichtbarkeit von FragmentManager überschrieben. Diese Person steuert die Sichtbarkeit der Stammansicht. Als Behelfslösung sollten Sie immer die Operationen hide() und show() verwenden, um die Sichtbarkeit des Fragments zu ändern. (b/164481490)

Version 1.3.0-alpha07

22. Juli 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 und androidx.fragment:fragment-testing:1.3.0-alpha07 wurden veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.

Neue Funktionen

  • FragmentScenario unterstützt jetzt das Festlegen eines anfänglichen Lebenszyklusstatus von CREATED, STARTED oder RESUMED, anstatt das Fragment immer in den Status RESUMED zu verschieben. (b/159662750)
  • Eine Alternative zur FragmentScenario API von onFragment wurde in Form der Kotlin-Reified-Erweiterungsmethode withFragment hinzugefügt, mit der ein Wert zurückgegeben werden kann. Insbesondere werden die im jeweiligen Block ausgelösten Ausnahmen wiederholt. (b/158697631)

Änderungen des Verhaltens

  • FragmentScenario verwendet jetzt setMaxLifecycle() zur Implementierung von moveToState(). Dadurch wird ein konsistentes Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt. (b/156527405)
  • Das von ViewTreeSavedStateRegistryOwner zurückgegebene SavedStateRegistryOwner ist jetzt an den Lebenszyklus der Fragmentansicht gebunden. Dadurch wird sichergestellt, dass der Status gespeichert und gleichzeitig mit der Ansicht des Fragments wiederhergestellt wird. (b/158503763)

Fehlerkorrekturen

  • Fragmente warten jetzt, bis die Ansicht des Fragments angehängt wurde, bevor sie ViewCompat.requestApplyInsets() aufrufen. Dadurch werden Fälle vermieden, in denen die eingefügte Anfrage gelöscht wurde. (b/158095749)
  • Durch das Aufrufen von clearFragmentResultListener wird der Lebenszyklus-Beobachter jetzt ordnungsgemäß gelöscht. (b/159274993)

Version 1.3.0-alpha06

10. Juni 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 und androidx.fragment:fragment-testing:1.3.0-alpha06 wurden veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Eine neue FragmentOnAttachListener wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren von onAttachFragment() in separate, testbare Listener und das Hinzufügen eines Listeners zu anderen FragmentManagern als Ihrem direkt untergeordneten FragmentManager. (I06d3d)

Fehlerkorrekturen

  • Bei übergeordneten Fragmenten wird jetzt der Ansichtsstatus vor den untergeordneten Fragmenten wiederhergestellt. Dadurch wird nach einer Konfigurationsänderung ein visuelles Sortierungsproblem behoben, wenn ein DialogFragment eine andere DialogFragment als untergeordnetes Fragment anzeigt. (b/157195715)
  • Ein Problem wurde behoben, bei dem die UseRequireInsteadOfGet-Lint-Prüfung verkettete Nutzungen der Operatoren ?. und !! nicht korrekt verarbeitete. (b/157677616)

Version 1.3.0-alpha05

20. Mai 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 und androidx.fragment:fragment-testing:1.3.0-alpha05 wurden veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die APIs setFragmentResult() und setFragmentResultListener() verwenden jetzt einen Bundle ungleich null bzw. FragmentResultListener. Verwenden Sie die neuen Methoden clearFragmentResult() und clearFragmentResultListener(), um ein zuvor festgelegtes Ergebnis oder einen zuvor festgelegten Listener explizit zu löschen. (b/155416778)
  • Die setFragmentResultListener()-Kotlin-Erweiterungen, die eine Lambda-Funktion ausführen, sind jetzt als inline gekennzeichnet. (b/155323404)

Änderungen des Verhaltens

  • Die zuvor verworfenen startActivityForResult(), startIntentSenderForResult() und requestPermissions in Fragment verwenden jetzt intern ActivityResultRegistry. Dadurch wird die Einschränkung aufgehoben, bei der Sie bei Verwendung dieser APIs nur die niedrigeren Bits (unter 0xFFFF) für Ihre Anfragecodes verwenden. (b/155518741)

Aktualisierungen der Dokumentation

  • Die Dokumentation zu den Konstruktoren Fragment(@LayoutRes int) und DialogFragment(@LayoutRes int) wurde erweitert, um zu verdeutlichen, dass sie über den Nicht-Argument-Konstruktor Ihrer Unterklassen aufgerufen werden sollten, wenn der Standard-FragmentFactory verwendet wird. (b/153042497)

Version 1.3.0-alpha04

29. April 2020

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 und androidx.fragment:fragment-testing:1.3.0-alpha04 wurden veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs unter FragmentManager hinzugefügt. Dies funktioniert für hierarchische Fragmente (über-/untergeordnete), DialogFragments und Fragmente in der Navigation und stellt sicher, dass Ergebnisse nur an Ihr Fragment gesendet werden, solange es mindestens STARTED ist. (b/149787344)

API-Änderungen

  • Die Zielfragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
  • Die APIs startActivityForResult()/onActivityResult() und requestPermissions()/onRequestPermissionsResult() in Fragment wurden eingestellt. Verwenden Sie die Activity Result APIs. (aosp/1290887)
  • Nicht funktionsgefährdende Änderung von Aktivität 1.2.0-alpha04: Die Methode prepareCall() wurde in registerForActivityResult() umbenannt. (aosp/1278717)

Fehlerkorrekturen

  • Das getViewLifecycleOwner() des Fragments wird jetzt beendet, bevor onSaveInstanceState() aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. (b/154645875)
  • Wenn setMenuVisibility(false) für ein Fragment aufgerufen wird, wird jetzt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, korrekt geändert. (b/153593580)
  • Ein illegalStateException beim Hinzufügen eines Fragments zur Ansichtshierarchie einer DialogFragment mit FragmentContainerView wurde korrigiert. (b/154366601)
  • Die getDefaultViewModelProviderFactory()-Methode für Fragmente stürzt nicht mehr ab, wenn Ihre Fragmente außerhalb einer Aktivität gehostet werden. (b/153762914)

Version 1.3.0-alpha03

1. April 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 und androidx.fragment:fragment-testing:1.3.0-alpha03 wurden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die prepareCall-Methoden für Fragment sind jetzt final. (b/152439361)

Fehlerkorrekturen

  • Eine Regression wurde behoben, die bei Verwendung von BottomSheetDialogFragment in Fragment 1.3.0-alpha02 eingeführt wurde. (b/151652127, aosp/1263328, aosp/1265163)
  • Ein Absturz wurde behoben, der nach einer Konfigurationsänderung bei Verwendung von prepareCall aus einem Fragment auftrat. (b/152137004)
  • Bei Verwendung von setTargetFragment() wurden Übergänge zu gemeinsam genutzten Elementen und Exits ignoriert. Das Problem wurde behoben. (b/152023196)
  • Von Fragment 1.2.4: Die Fragment ProGuard-Regeln wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
  • Aus Fragment 1.2.4: Die FragmentLiveDataObserve-Lint-Regel für DialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und ihr Ansichtslebenszyklus immer synchron sind. Dadurch kann beim Aufrufen von observe entweder this oder viewLifecycleOwner bedenkenlos verwendet werden. (b/151765086)

Änderungen bei Abhängigkeiten

  • Fragmente hängen von Activity 1.2.0-alpha03 ab, das erhebliche Verbesserungen an der in Aktivität 1.2.0-alpha02 eingeführten Activity Result API bietet.

Version 1.3.0-alpha02

18. März 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 und androidx.fragment:fragment-testing:1.3.0-alpha02 wurden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Die in Aktivität 1.2.0-alpha02 eingeführte ActivityResultRegistry API wird nun unterstützt, um die Abläufe startActivityForResult()+onActivityResult() und requestPermissions()+onRequestPermissionsResult() zu verarbeiten, ohne die Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen. (b/125158199)

API-Änderungen

  • DialogFragment bietet jetzt einen Konstruktor mit einem @LayoutRes-Wert, der das Layout angibt, das onCreateView() standardmäßig aufblähen soll. (b/150327080)
  • Die Methode onActivityCreated() wurde eingestellt. Code, der die Ansicht des Fragments berührt, sollte in onViewCreated() ausgeführt werden (der direkt vor onActivityCreated() aufgerufen wird) und anderer Initialisierungscode sollte sich in onCreate() befinden. Damit du einen Callback erhältst, wenn der onCreate() der Aktivität abgeschlossen ist, sollte eine LifeCycleObserver im Lifecycle der Aktivität in onAttach() registriert und entfernt werden, sobald der onCreate()-Callback empfangen wird. (b/144309266)

Fehlerkorrekturen

  • Aus Fragment 1.2.3: Ein Fehler in DialogFragment wurde behoben, der beim Aufrufen von getLayoutInflater() in onCreateDialog() zu StackOverflowError führte. (b/117894767, aosp/1258664)
  • Von Fragment 1.2.3: Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Aus Fragment 1.2.3: Fehler mit falsch positiven Ergebnissen in der UseRequireInsteadOfGet-Lint-Prüfung bei Verwendung eines lokalen Variablennamens behoben, der den Kotlin-Attributnamen verdeckt hat. (b/149891163)
  • Aus Fragment 1.2.3: FragmentContainerView gibt kein UnsupportedOperationException mehr aus, wenn in der Layoutvorschau der falsche Konstruktor verwendet wird. (b/149707833)

Bekannte Probleme

  • BottomSheetDialogFragment positioniert das Dialogfeld nicht mehr richtig auf dem Bildschirm. (b/151652127)

Version 1.3.0-alpha01

4. März 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 und androidx.fragment:fragment-testing:1.3.0-alpha01 wurden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die Methode setRetainInstance() für Fragmente wurde eingestellt. Mit der Einführung von ViewModels steht Entwicklern eine spezielle API zur Beibehaltung des Status zur Verfügung, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Dies ermöglicht Entwicklern, ein normales, nicht beibehaltenes Fragment zu verwenden und den spezifischen Status, den sie beibehalten möchten, separat zu halten. Dadurch wird eine gemeinsame Quelle von Datenlecks vermieden und gleichzeitig die nützlichen Eigenschaften einer einzelnen Erstellung und des Löschens des beibehaltenen Status beibehalten (nämlich der Konstruktor des ViewModel- und des onCleared()-Callbacks, den es erhält). (b/143911815)
  • Mit der Veröffentlichung von ViewPager2 1.0.0 wurden die Klassen FragmentPagerAdapter und FragmentStatePagerAdapter zur Interaktion mit ViewPager eingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren. (b/145132715)

Fehlerkorrekturen

  • Fragment ProGuard-Regeln behalten jetzt korrekt nur die Fragment-Standardklassen des Konstruktors bei, die verwendet werden, und nicht mehr für alle Fragment-Instanzen. Damit wird eine Regression behoben, die in Fragment 1.2.1 eingeführt wurde. (b/149665169
  • Die in Fragment 1.2.2 hinzugefügten require___()-Lint-Regeln führen bei lokalen Variablen, die denselben Namen wie die verdeckten Kotlin-Attributnamen haben (z.B. view). (b/149891163)
  • FragmentContainerView gibt kein UnsupportedOperationException mehr aus, wenn die Layoutvorschau in Android Studio verwendet wird. (b/149707833)
  • Ein Problem wurde behoben, bei dem beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung gelöscht wurden. (b/145832397)

Version 1.2.5

Version 1.2.5

10. Juni 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 und androidx.fragment:fragment-testing:1.2.5 wurden veröffentlicht. Version 1.2.5 enthält diese Commits.

Fehlerkorrekturen

  • Das getViewLifecycleOwner() des Fragments wird jetzt beendet, bevor onSaveInstanceState() aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. Dies wurde zuvor in Fragment 1.3.0-alpha04 veröffentlicht. (b/154645875)
  • Wenn setMenuVisibility(false) für ein Fragment aufgerufen wird, wird jetzt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, korrekt geändert. Dies wurde zuvor in Fragment 1.3.0-alpha04 veröffentlicht. (b/153593580)

Version 1.2.4

Version 1.2.4

1. April 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 und androidx.fragment:fragment-testing:1.2.4 wurden veröffentlicht. Version 1.2.4 enthält diese Commits.

Fehlerkorrekturen

  • Die Fragment ProGuard-Regeln wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
  • Die FragmentLiveDataObserve-Lint-Regel für DialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und ihr Ansichtslebenszyklus immer synchron sind. Daher kann beim Aufrufen von observe entweder this oder viewLifecycleOwner verwendet werden. (b/151765086)

Version 1.2.3

Version 1.2.3

18. März 2020

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 und androidx.fragment:fragment-testing:1.2.3 wurden veröffentlicht. Version 1.2.3 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler in DialogFragment behoben, der beim Aufrufen von getLayoutInflater() in onCreateDialog() zu einem StackOverflowError führte. (b/117894767, aosp/1258665)
  • Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, um sicherzustellen, dass nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Fehler mit falsch positiven Ergebnissen in der UseRequireInsteadOfGet-Lint-Prüfung bei Verwendung eines lokalen Variablennamens behoben, der den Kotlin-Attributnamen verdeckt hat, wurde behoben. (b/149891163)
  • FragmentContainerView gibt kein UnsupportedOperationException mehr aus, weil in der Layoutvorschau der falsche Konstruktor verwendet wird. (b/149707833)

Version 1.2.2

Version 1.2.2

19. Februar 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 und androidx.fragment:fragment-testing:1.2.2 wurden veröffentlicht. Version 1.2.2 enthält diese Commits.

Neue Lint-Prüfungen

  • Lint empfiehlt, viewLifecycleOwner als LifecycleOwner für Aufrufe von OnBackPressedDispatcher in onCreateView(), onViewCreated() und onActivityCreated() zu verwenden. (b/142117657)
  • Eine neue Lint-Prüfung wurde hinzugefügt, die bestätigt, dass Sie bei Verwendung des fragment-testing-Artefakts den richtigen debugImplementation verwenden. (b/141500106)
  • Fragmente schlagen jetzt vor, für alle Fragment APIs, die sowohl ein get- als auch ein require-Äquivalent enthalten, die zugehörigen require___()-Methoden für aussagekräftigere Fehlermeldungen anstelle von checkNotNull(get___()), requireNonNull(get___()) oder get___()!! zu verwenden. (aosp/1202883)

Fehlerkorrekturen

  • Die Fragment ProGuard-Dateien wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981).
  • Die vorhandene Lint-Prüfung, die vorschlägt, viewLifecycleOwner zu verwenden, wenn observe verwendet wird, um auch die Version der livedata-ktx-Erweiterungsmethode von observe zu verarbeiten, wurde verbessert. (b/148996309)
  • Die Formatierung für viele Lint-Prüfungen wurde korrigiert (aosp/1157012).

Externe Beiträge

  • Vielen Dank an Zac Sweers, dass Sie im Namen von Slack require___() Lint-Prüfungen eingereicht haben. (aosp/1202883)

Version 1.2.1

Version 1.2.1

5. Februar 2020

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 und androidx.fragment:fragment-testing:1.2.1 wurden veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Für Fragmente, die über die Methoden add und replace hinzugefügt wurden, die eine Class-Instanz (oder die reifizierten Kotlin-Versionen) übernehmen, wird jetzt der Standardkonstruktor von ProGuard beibehalten. (b/148181315)
  • FragmentStatePagerAdapter und FragmentPagerAdapter erfassen keine Ausnahmen mehr, die von FragmentManager beim Ausführen von finishUpdate() ausgegeben werden. (aosp/1208711)
  • Ein Problem wurde behoben, bei dem FragmentManager.findFragment() nicht mit Fragmenten funktionierte, die über das <fragment>-Tag hinzugefügt wurden. (b/147784323)
  • Fragmente, die mit dem <fragment>-Tag aufgebläht wurden, erhalten jetzt im Layout immer einen Aufruf an onInflate() vor onCreate(). (aosp/1215856)
  • Beim Aufrufen von toString() für eine FragmentManager-Instanz wird kein NullPointerException mehr ausgegeben, wenn die Aktivität bereits gelöscht ist. (b/148189412)

Abhängigkeitsänderungen

Version 1.2.0

Version 1.2.0

22. Januar 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 und androidx.fragment:fragment-testing:1.2.0 wurden veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • FragmentContainerView: Der FragmentContainerView ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente, der die Verwendung von FrameLayout oder anderen Layouts ersetzt. Es unterstützt auch dieselben class-, android:name- und optionalen android:tag wie das <fragment>-Tag, verwendet jedoch eine normale FragmentTransaction, um dieses anfängliche Fragment hinzuzufügen, und nicht den von <fragment> verwendeten benutzerdefinierten Codepfad.
  • onDestroyView()-Timing: Fragmente warten jetzt auf Beenden-Animationen, Framework-Übergänge und AndroidX-Übergänge (bei Verwendung von Übergang 1.3.0), bevor sie onDestroyView() aufrufen.
  • Klassenbasiertes add() und replace(): Es wurden neue Überlastungen von add() und replace() für FragmentTransaction hinzugefügt, die Class<? extends Fragment> und optionale Bundle mit Argumenten akzeptieren. Diese Methoden verwenden Ihr FragmentFactory, um eine Instanz des hinzuzufügenden Fragments zu konstruieren. Kotlin-Erweiterungen mit reifizierten Typen (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)) wurden fragment-ktx ebenfalls hinzugefügt.
  • Lebenszyklus-ViewModel-Datenspeicher-Integration: SavedStateViewModelFactory ist jetzt die Standard-Factory, die verwendet wird, wenn by viewModels(), by activityViewModels(), der ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwendet wird.
  • Neue Lint-Prüfungen: Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie getViewLifecycleOwner() verwenden, wenn Sie LiveData von onCreateView(), onViewCreated() oder onActivityCreated() beobachten.
  • Einstellung von getFragmentManager(): Die Methoden getFragmentManager() und requireFragmentManager() in Fragment wurden verworfen und durch eine einzelne getParentFragmentManager()-Methode ersetzt, die den Nicht-NULL-Wert zurückgibt, der FragmentManager zurückgegeben wird, dem das Fragment hinzugefügt wurde. Sie können isAdded() verwenden, um festzustellen, ob der Aufruf sicher ist.
  • Einstellung von FragmentManager.enableDebugLogging(): Die statische Methode FragmentManager.enableDebugLogging wurde verworfen. FragmentManager akzeptiert jetzt Log.isLoggable() für das Tag FragmentManager, sodass Sie das DEBUG- oder VERBOSE-Logging aktivieren können, ohne Ihre App neu zu kompilieren.

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name in einem FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt, sodass Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen müssen. (b/142601969)
  • Wenn du ein NavHostFragment mit class oder android:name in XML mit FragmentContainerView hinzufügst, kannst du findNavController() nicht in onCreate() deiner Aktivitäten verwenden. (b/142847973)

Version 1.2.0-rc05

8. Januar 2020

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 und androidx.fragment:fragment-testing:1.2.0-rc05 wurden veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression in Fragment 1.2.0-rc04 bei Verwendung des <fragment>-Tags, die beim Löschen von Aktivitäten dazu führte, dass onViewCreated() falsch aufgerufen wurde, wurde behoben. (b/146290333)
  • Bei Fragmenten, die mit dem <fragment>-Tag hinzugefügt werden, wird jetzt korrekt die Konfiguration ohne Konfiguration gelöscht, auch wenn sie sich nur gelegentlich im Layout befinden (d.h. nur im Querformat). Infolgedessen werden diese Fragmente jetzt korrekt zu CREATED verschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden nicht instanziiert, aber nie durch Lebenszyklusmethoden verschoben. (b/145769287)

Version 1.2.0-rc04

18. Dezember 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 und androidx.fragment:fragment-testing:1.2.0-rc04 wurden veröffentlicht. Version 1.2.0-rc04 enthält diese Commits.

Fehlerkorrekturen

  • Die Animationen für TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE wurden angepasst, um visuelle Probleme zu vermeiden. (b/145468417)

Version 1.2.0-rc03

4. Dezember 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 und androidx.fragment:fragment-testing:1.2.0-rc03 wurden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine unbeabsichtigte Änderung des Verhaltens behoben, durch die entfernte Fragmente weiterhin von findFragmentById() / findFragmentByTag() zurückgegeben wurden, während ihre Exit-Animationen/Übergänge ausgeführt wurden. (b/143982969, aosp/1167585)
  • Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Elementen gestoppt, wenn die enthaltende Aktivität onSaveInstanceState() aufruft. (b/144380645)
  • Ansichten wurden nach dem Pop-up eines ausgeblendeten Fragments fälschlicherweise als INVISIBLE markiert. Dieses Problem wurde behoben. (b/70793925)
  • Übergänge von freigegebenen Fragmenten werden jetzt für Ansichten verarbeitet, die gedreht, skaliert usw. wurden (b/142835261).

Aktualisierungen der Dokumentation

  • Die Dokumentation zur Einstellung von setUserVisibleHint() wurde klarer formuliert. (b/143897055)
  • Die Dokumentation für setFragmentFactory() und getFragmentFactory() wurde verbessert, um besser darauf hinzuweisen, dass sich das Festlegen von FragmentFactory auch auf untergeordnete FragmentManagers auswirkt. (aosp/1170095)

Abhängigkeitsänderungen

  • Fragmente hängen jetzt von Lebenszyklus 2.2.0-rc03, Lebenszyklus-ViewModel-Speicher1.0.0-rc03 und Aktivität 1.1.0-rc03 ab.

Version 1.2.0-rc02

7. November 2019

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 und androidx.fragment:fragment-testing:1.2.0-rc02 wurden veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • In Kotlin verwendet LintFix zur Verwendung von getViewLifecycleOwner() bei der Beobachtung von LiveData aus onCreateView(), onViewCreated() oder onActivityCreated() (eingeführt in Fragment 1.2.0-rc01) jetzt die Syntax für den Kotlin-Attributzugriff viewLifecycleOwner anstelle von getViewLifecycleOwner(). (aosp/1143821)

Version 1.2.0-rc01

23. Oktober 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 und androidx.fragment:fragment-testing:1.2.0-rc01 wurden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt jetzt neben android:name auch das Attribut class, was die Funktionalität des <fragment>-Tags widerspiegelt. (b/142722242)
  • Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie getViewLifecycleOwner() verwenden, wenn Sie LiveData aus onCreateView(), onViewCreated() oder onActivityCreated() beobachten. (b/137122478)

Fehlerkorrekturen

  • Die Callbacks onDismiss und onCancel für DialogFragment garantieren jetzt, dass der an sie übergebene DialogInterface nicht null ist und dass getDialog() bei ihrer Ausführung nicht null zurückgibt. (b/141974033)
  • FragmentContainerView fügt jetzt das durch class oder android:name definierte Fragment als Teil der Inflation hinzu, sodass findFragmentById() und findFragmentByTag() sofort danach funktionieren. (b/142520327)
  • Ein IllegalStateException in FragmentContainerView aufgrund des gespeicherten Status wurde behoben. (b/142580713)
  • Ein UnsupportedOperationException in FragmentContainerView wurde behoben, wenn die FragmentContainerView-Klasse verschleiert ist. (b/142657034)

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name in einem FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt, sodass Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen müssen. Wir haben die Lint-Regel mit dem Vorschlag zum Wechsel zu FragmentContainerView deaktiviert, bis das Problem über aapt2 behoben wurde. (b/142601969)

Version 1.2.0-beta02

11. Oktober 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 und androidx.fragment:fragment-testing:1.2.0-beta02 wurden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • onInflate()“ von Fragment hat nicht die richtigen Attribute von FragmentContainerView empfangen, wodurch Fälle wie NavHostFragment nicht funktionieren. (b/142421837)

Version 1.2.0-beta01

9. Oktober 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 und androidx.fragment:fragment-testing:1.2.0-beta01 wurden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt das Hinzufügen eines Anfangsfragments mit Unterstützung für die XML-Attribute android:name und android:tag. Im Gegensatz zum <fragment>-Tag verwendet FragmentContainerView eine normale FragmentTransaction, um das erste Fragment hinzuzufügen. Dadurch sind weitere FragmentTransaction-Vorgänge für das FragmentContainerView möglich und die Verwendung von Ansichtsbindung für das Layout ermöglicht. (b/139830628 und b/141177981)
  • Fragmente enthalten jetzt eine Lint-Warnung, über die <fragment> durch FragmentContainerView ersetzt werden kann. (b/139830056)

Fehlerkorrekturen

  • Ein ClassCastException bei der Verwendung von androidx.transition wurde behoben. (b/140680619)
  • Bei der Verwendung von Übergang 1.3.0-beta01 warten Fragmente jetzt darauf, dass androidx.transition Übergänge (zusätzlich zu den Framework-Übergängen und Animationen, die in Fragment 1.2.0-alpha03 bzw. Fragment 1.2.0-alpha02 festgelegt wurden) abgeschlossen sind, bevor onDestroyView() gesendet wird. (aosp/1119841)
  • Wenn Sie die Umstellung 1.3.0-beta01 verwenden, brechen Fragmente jetzt androidx.transition-Übergänge korrekt ab, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841)
  • Es wurde ein Problem in API 17 und niedriger behoben, wenn androidx.transition-Übergänge in der Stammansicht des Fragments bei Verwendung von FragmentContainerView verwendet wurden. (b/140361893)
  • Das fragment-testing-Artefakt hängt jetzt von AndroidX Test 1.2.0 ab, wodurch eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben wird. (b/139100149)
  • Verwendung von Log.w in FragmentManager entfernt. (aosp/1126468)

Bekannte Probleme

  • Das onInflate() des Fragments erhält nicht die richtigen Attribute von FragmentContainerView, sodass Fälle wie NavHostFragment nicht funktionieren. (b/142421837)

Version 1.2.0-alpha04

18. September 2019

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 und androidx.fragment:fragment-testing:1.2.0-alpha04 wurden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Methoden getFragmentManager() und requireFragmentManager() für Fragment wurden eingestellt und durch eine einzige getParentFragmentManager()-Methode ersetzt, die die Nicht-Null-FragmentManager zurückgibt, der das Fragment hinzugefügt wurde. Sie können isAdded() verwenden, um festzustellen, ob der Aufruf sicher ist. (b/140574496)
  • Die statische Methode FragmentManager.enableDebugLogging wurde eingestellt. FragmentManager unterstützt jetzt Log.isLoggable() für das Tag FragmentManager, sodass Sie entweder das DEBUG- oder VERBOSE-Logging aktivieren können, ohne Ihre App neu zu kompilieren. (aosp/1116591)

Fehlerkorrekturen

  • Fragmente werden jetzt ordnungsgemäß gelöscht, während die Beenden-Animationen auf anderen Fragmenten ausgeführt werden. (b/140574199)
  • Ein Problem wurde behoben, bei dem Fragmente Activity.findViewById() aufrufen konnten, zuvor aber nicht. (aosp/1116431)

Version 1.2.0-alpha03

5. September 2019

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 und androidx.fragment:fragment-testing:1.2.0-alpha03 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

Fehlerkorrekturen

  • FragmentContainerView kehrt jetzt die Zeichenreihenfolge korrekt um, wenn Fragmente aus dem Back-Stack entfernt werden. (b/139104187)
  • Ein Problem wurde behoben, bei dem die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment per Pop-up übertragen und ein neues Fragment hinzugefügt wurde. (b/111659726)
  • Fragmente warten jetzt, bis die Übergänge (zusätzlich zu den in Fragment 1.2.0-alpha02 behobenen Animationen) abgeschlossen sind, bevor sie onDestroyView() senden. (b/138741697)

Version 1.2.0-alpha02

7. August 2019

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 und androidx.fragment:fragment-testing:11.2.0-alpha02 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • SavedStateViewModelFactory ist jetzt die standardmäßige Factory, die verwendet wird, wenn by viewModels(), by activityViewModels(), der ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwendet wird. (b/135716331)
  • Die Standardanimationen bei der Verwendung von TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE mit setTransition auf einem FragmentTransaction wurden aktualisiert, um den Animationen zu entsprechen, die von Aktivitäten auf Android 10-Geräten verwendet werden. (aosp/1012812, aosp/1014730)

API-Änderungen

  • Einführung von FragmentContainerView als dringend empfohlener Container für dynamisch hinzugefügte Fragmente, ersetzt die Verwendung von FrameLayout usw., da dadurch Probleme bei der z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben werden. (b/37036000, aosp/985243, b/136494650)
  • Eine statische FragmentManager.findFragment(View)-Methode wurde hinzugefügt, um das enthaltende Fragment aus einer Ansicht abzurufen, die durch ein Fragment aufgebläht wurde. In fragment-ktx ist auch eine Kotlin-Erweiterung verfügbar. (aosp/1090757)
  • Neue Überlastungen von add() und replace() auf FragmentTransaction hinzugefügt, die Class<? extends Fragment> und optional Bundle mit Argumenten erfordern. Diese Methoden verwenden Ihr FragmentFactory, um eine Instanz des hinzuzufügenden Fragments zu konstruieren. Kotlin-Erweiterungen, die reifizierte Typen verwenden (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)), wurden zu fragment-ktx hinzugefügt. (b/126124987)
  • @MainThread-Annotationen wurden Fragment Lebenszyklus-Callbacks hinzugefügt. (b/127272564)
  • Die auf den Navigationspfad bezogenen APIs unter FragmentTransaction und FragmentManager.BackStackEntry wurden eingestellt. (b/138252944)
  • Die Methode setTransitionStyle für FragmentTransaction wurde eingestellt. (aosp/1011537)
  • Viele der Methoden in FragmentManager sind nicht mehr abstract. FragmentManager selbst bleibt abstract und sollte nicht direkt instanziiert oder erweitert werden. Es sollte weiterhin nur eine vorhandene Instanz von getSupportFragmentManager(), getChildFragmentManager() usw. abgerufen werden.

Fehlerkorrekturen

  • Ab Fragment 1.1.0-rc04: Fragmente verhindern jetzt korrekt verschobene Übergänge bei Fragmenten, die per Pop-up entfernt wurden. (b/138251858)
  • Aus Fragment 1.1.0-rc03: Ein Problem wurde behoben, bei dem durch das wiederholte Aufrufen von postponeEnterTransition() mit einem Zeitlimit frühere Zeitüberschreitungen nicht abgebrochen wurden. (b/137797118)
  • Aus Fragment 1.1.0-rc02: Ein Absturz in FragmentPagerAdapter und FragmentStatePagerAdapter beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
  • Fragmente warten jetzt, bis Animationen fertig sind, bevor sie onDestroyView() senden. (b/136110528)
  • Fragmentanimationen von untergeordneten Fragmenten und deren Nachfolger werden jetzt korrekt verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
  • Ein NullPointerException wurde korrigiert, wenn Übergänge für gemeinsame Elemente verwendet und ein Pop-up- und Add-Vorgang kombiniert wurden. (b/120507394)
  • Für IllegalStateExceptions wurde eine Problemumgehung hinzugefügt, wenn FragmentPagerAdapter und FragmentStatePagerAdapter in Robolectric-Tests verwendet werden. (b/137201343)

Version 1.2.0-alpha01

2. Juli 2019

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 und androidx.fragment:fragment-testing:1.2.0-alpha01 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • FragmentManager ruft jetzt requestApplyInsets() auf, nachdem die Ansicht des Fragments angehängt wurde und direkt vor onViewCreated(). Dadurch wird sichergestellt, dass Ihre Ansicht immer die richtigen Einsätze enthält. (b/135945162)

Fehlerkorrekturen

  • Ein NullPointerException beim Senden eines FragmentTransaction, das vor replace() mit setPrimaryNavigationFragment() verwendet wurde, wurde behoben. (b/134673465)

Version 1.1.0

Version 1.1.0

5. September 2019

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 und androidx.fragment:fragment-testing:1.1.0 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 1.0.0

  • fragment-testing: Das Artefakt fragment-testing bietet eine FragmentScenario-Klasse zum isolierten Testen eines Fragments. Weitere Informationen finden Sie in der Dokumentation zum Testen Ihrer App-Fragmente.
  • FragmentFactory: Sie können jetzt eine FragmentFactory für eine FragmentManager festlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Dadurch entfällt die strenge Anforderung an einen No-Argument-Konstruktor.
  • Kotlin-Property-Delegaten für ViewModels: Das Artefakt fragment-ktx enthält jetzt zwei Kotlin-Property-Delegierte: by viewModels() für den Zugriff auf ViewModels, die mit dem einzelnen Fragment verknüpft sind, und by activityViewModels() für den Zugriff auf ViewModels, die auf die Aktivität beschränkt sind.
  • Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie setMaxLifecycle() für ein FragmentTransaction aufrufen. Dies ersetzt das inzwischen eingestellte setUserVisibleHint(). FragmentPagerAdapter und FragmentStatePagerAdapter haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können.
  • FragmentActivity LayoutId-Konstruktor: Abgeleitete Klassen von FragmentActivity können jetzt optional einen Konstruktor für FragmentActivity aufrufen, der eine R.layout-ID annimmt. Dadurch wird das Layout angegeben, das als Inhaltsansicht festgelegt werden sollte, und zwar als Alternative zum Aufrufen von setContentView() in onCreate(). Dies ändert nichts an der Anforderung, dass Ihre Unterklasse über einen No-Argument-Konstruktor verfügen muss.
  • Fragment LayoutId-Konstruktor: Abgeleitete Klassen von Fragment können jetzt optional einen Konstruktor für Fragment aufrufen, der eine R.layout-ID annimmt. Dadurch wird das Layout angegeben, das für dieses Fragment als Alternative zum Überschreiben von onCreateView() verwendet werden soll. Das überhöhte Layout kann in onViewCreated() konfiguriert werden.
  • Mit Zeitlimit verschieben: Es wurde eine neue Überlastung von postponeEnterTransition() hinzugefügt, die ein Zeitlimit erfordert.

Version 1.1.0-rc04

7. August 2019

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 und androidx.fragment:fragment-testing:1.1.0-rc04 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Fragmente brechen jetzt korrekt verschobene Übergänge für Fragmente ab. (b/138251858)

Version 1.1.0-rc03

19. Juli 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 und androidx.fragment:fragment-testing:1.1.0-rc03 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Wenn postponeEnterTransition() mit einem Zeitlimit mehrmals aufgerufen wurde, wurden vorherige Zeitüberschreitungen nicht abgebrochen. Dieses Problem wurde behoben. (b/137797118)

Version 1.1.0-rc02

17. Juli 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 und androidx.fragment-testing:fragment:1.1.0-rc02 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Ein Absturz in FragmentPagerAdapter und FragmentStatePagerAdapter beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)

Version 1.1.0-rc01

2. Juli 2019

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 und androidx.fragment:fragment-testing:1.1.0-rc01 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn show()- oder hide()-Vorgänge während der Umstellung verwendet werden. (b/133385058)
  • Ein NullPointerException beim Senden eines FragmentTransaction, das vor replace() mit setPrimaryNavigationFragment() verwendet wurde, wurde behoben. (b/134673465)

Version 1.1.0-beta01

5. Juni 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 und androidx.fragment:fragment-testing:1.1.0-beta01 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • androidx.lifecycle.Lifecycle-Callbacks (insbesondere in Bezug auf STARTED, RESUMED, PAUSED, STOPPED und DESTROYED) für verschachtelte Fragmente sind jetzt korrekt verschachtelt. (b/133497591)
  • OnBackPressedCallback-Instanzen, die im onCreate() eines Fragments registriert sind, haben jetzt Vorrang vor dem untergeordneten FragmentManager. (b/133175997)
  • Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
  • Fragmentanimationen und -übergänge werden jetzt bei der Verwendung von animateLayoutChanges="true" ignoriert. Dadurch wird ein Problem behoben, bei dem Fragmente nicht ordnungsgemäß gelöscht wurden. (b/116257087)

Version 1.1.0-alpha09

16. Mai 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 und androidx.fragment:fragment-testing:1.1.0-alpha09 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Fragmente erhalten jetzt einen Callback an eine neue onPrimaryNavigationFragmentChanged(boolean)-Methode, wenn sich das Fragment der primären Navigation ändert. aosp/960857

Fehlerkorrekturen

  • Von einem untergeordneten Fragment aufgeblähte Menüpunkte werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013

Version 1.1.0-alpha08

7. Mai 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 und androidx.fragment:fragment-testing:1.1.0-alpha08 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Dieser Release ist nicht mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Bitte aktualisiere auf die Einstellungen 1.1.0-alpha05, wenn du diese Version von Fragmenten verwendest.

Neue Funktionen

  • Eine neue Überlastung von postponeEnterTransition() wurde hinzugefügt, die ein Zeitlimit erfordert. Danach ruft das Fragment automatisch startPostponedEnterTransition() b/120803208 auf.

API-Änderungen

  • Nicht funktionsgefährdende Änderung: Die zuvor verworfene Methode FragmentFactory instantiate, für die Bundle verwendet wurde, wurde entfernt. aosp/953856
  • Nicht abwärtskompatible Änderung: Die Konstanten RESUME_ONLY_CURRENT_FRAGMENT und USE_SET_USER_VISIBLE_HINT in FragmentPagerAdapter und FragmentStatePagerAdapter wurden in BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT bzw. BEHAVIOR_SET_USER_VISIBLE_HINT umbenannt. aosp/954782

Fehlerkorrekturen

  • Fragmente, deren Lebenszyklus durch setMaxLifecycle() begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Zustand erreichen. b/131557151
  • Bei Verwendung von setMaxLifecycle(Lifecycle.State.CREATED) wird die Ansicht von Fragmenten ordnungsgemäß gelöscht. aosp/954180

Version 1.1.0-alpha07

25. April 2019

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 und androidx.fragment:fragment-testing:1.1.0-alpha07 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie setMaxLifecycle() für ein FragmentTransaction aufrufen. Dies ersetzt das inzwischen eingestellte setUserVisibleHint(). FragmentPagerAdapter und FragmentStatePagerAdapter haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)

API-Änderungen

  • moveToState(STARTED) unter FragmentScenario kann jetzt nur auf Geräten ab API 24 aufgerufen werden. (b/129880016)

Änderungen des Verhaltens

  • Aufgrund von (b/129907905) erhalten Fragmente im Back-Stack keinen Callback von onCreateView(), wenn die Hosting-Aktivität neu erstellt wird. onCreateView() wird jetzt nur noch aufgerufen, wenn das Fragment sichtbar wird (d.h., der Back-Stack wird geöffnet).

Fehlerkorrekturen

  • Ein Problem wurde behoben, wenn ein <fragment>-Tag in XML und der contentLayoutId-Konstruktor von FragmentActivity oder AppCompatActivity verwendet wurden. (b/129907905)
  • Ein Problem wurde behoben, bei dem Fragmente im Back-Stack nach einer Konfigurationsänderung nicht mindestens zu CREATED verschoben wurden, wodurch ViewModels und untergeordnete beibehaltene Fragmente nicht richtig entsorgt wurden. (b/129593351)
  • Ein Absturz in restoreSaveState wurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824)
  • Es wurden Probleme behoben, bei denen ein OnBackPressedCallback, das mit einem Fragmentlebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn das FragmentManager einen Back-Stack hätte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209)
  • Fragmente erzwingen LAYER_TYPE_HARDWARE nicht mehr für Animationen. Wenn Sie ausdrücklich eine Animation der Hardwareebene benötigen, legen Sie sie als Teil der Animation fest. (b/129486478)

Version 1.1.0-alpha06

3. April 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 und androidx.fragment:fragment-testing:1.1.0-alpha06 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Von FragmentManager ausgelöste Ausnahmen enthalten jetzt den Namen des Fragments in der Nachricht. (b/67759402)

API-Änderungen

  • Fragment und FragmentActivity enthalten jetzt einen zweiten Konstruktor, der einen @LayoutRes int annimmt, der das vorherige Verhalten bei der Annotierung Ihrer Klasse mit @ContentView ersetzt. Dieser Ansatz funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)
  • Das onActivityResult() von FragmentActivity ist jetzt korrekt als @CallSuper gekennzeichnet. (b/127971684)
  • Die Methode instantiate von FragmentFactory, die ein Argument „Bundle“ verwendet, wurde eingestellt. Apps sollten die neue instantiate-Überlastung verwenden, die kein Bundle verwendet. (b/128836103)
  • FragmentScenario-Methoden sind jetzt korrekt mit @StyleRes annotiert. (aosp/924193)
  • FragmentTabHost wurde eingestellt. (b/127971835)
  • getThemedContext() von FragmentActivity wurde entfernt. (aosp/934078)

Fehlerkorrekturen

  • Eine Regression in 1.1.0-alpha05 wurde behoben, durch die das eingehende Fragment auf dem Bildschirm blinkte. (b/129405432)
  • Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von Vorgängen der Reihe nach „popBackStack+replace+popBackStack“ verloren ging. (b/124332597)
  • Ein Problem wurde behoben, das bei der Verwendung von @ContentView-Konstruktoren in deiner Aktivität beim Wiederherstellen des Fragmentstatus aufgetreten ist. (b/127313094)
  • Die Logik von setTargetFragment() beim Ersetzen eines vorhandenen Zielfragments durch ein Fragment wurde korrigiert, das noch nicht an FragmentManager angehängt ist. (aosp/932156)

Version 1.1.0-alpha05

13. März 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 und androidx.fragment:fragment-testing:1.1.0-alpha05 wurden veröffentlicht. Die vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • @ContentView-Anmerkungen werden jetzt im Cache gespeichert (b/123709449).

Änderungen des Verhaltens

  • Beim Aufrufen von remove(), hide(), show(), detach() und setPrimaryNavigationFragment() mit einem Fragment, das an einen anderen FragmentManager angehängt ist, wird jetzt ein IllegalStateException ausgelöst, statt einen Leerlauf auszuführen (aosp/904301).

Fehlerkorrekturen

  • onNewIntent für FragmentActivity ist jetzt korrekt mit @CallSuper gekennzeichnet (b/124120586)
  • Problem behoben, bei dem onDismiss() von DialogFragment bei Verwendung von getDialog().dismiss() oder getDialog().cancel() zweimal aufgerufen wurde (b/126563750)

Version 1.1.0-alpha04

7. Februar 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 und androidx.fragment:fragment-testing 1.1.0-alpha04 wurden veröffentlicht.

Neue Funktionen

  • Die @ContentView-Klassenannotation, mit der angegeben werden kann, welche Layout-XML-Datei als Alternative zum Überschreiben von onCreateView() aufgebläht werden soll, wird nun unterstützt. Es wird empfohlen, zugehörige Arbeiten in onViewCreated() anzusehen. (aosp/837619)
  • fragment-testing hängt jetzt von der stabilen Version androidx.test:core-ktx 1.1.0 ab (b/121209673)
  • Sie können jetzt openActionBarOverflowOrOptionsMenu mit FragmentScenario verwenden, um von Fragment gehostete Optionsmenüs zu testen (b/121126668).

API-Änderungen

  • Eine requireArguments()-Methode wurde hinzugefügt, die einen @NonNull Bundle zurückgibt oder einen IllegalStateException ausgibt (b/121196360).
  • Es wurde ein Hinweis hinzugefügt, dass getLifecycle(), getViewLifecycleOwner() und getViewLifecycleOwnerLiveData() nicht überschrieben werden sollten und in einem zukünftigen Release als endgültig festgelegt werden. Bitte senden Sie eine Funktionsanfrage, wenn Sie diese Methode derzeit überschreiben. (aosp/880714)
  • Es wurde ein Hinweis hinzugefügt, dass getViewModelStore() nicht überschrieben werden sollte und in einem zukünftigen Release als endgültig festgelegt wird. Bitte senden Sie eine Funktionsanfrage, wenn Sie diese Methode derzeit überschreiben. (aosp/880713)
  • Ein Problem mit der Binärkompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)

Fehlerkorrekturen

  • Die Zielfragmente werden korrekt gelöscht, wenn Sie null an setTargetFragment() übergeben. (aosp/849969)
  • Ein Problem wurde behoben, bei dem Zielfragmente in oder nach onDestroy() manchmal nicht verfügbar waren. (b/122312935)
  • onDismiss() von DialogFragment wird jetzt vor onDestroy() aufgerufen. (aosp/874133) (aosp/890734)

Version 1.1.0-alpha03

17. Dezember 2018

Neue Funktionen

  • Fragment implementiert jetzt BundleSavedStateRegistryOwner und hängt von der neu veröffentlichten SavedState-Bibliothek ab [aosp/824380].
  • Es wurde ein by activityViewModels-Kotlin-Property-Delegater hinzugefügt, um ViewModels abzurufen, die mit der zugehörigen Aktivität verknüpft sind [b/119050253].
  • Der Kotlin-Eigenschaftsdelegat by viewModels wurde erweitert, um eine optionale Lambda-Methode zum Abrufen des ViewModelStoreOwner zu verwenden, sodass Sie das übergeordnete Fragment oder eine andere benutzerdefinierte ViewModelStoreOwner mit Code wie val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253] übergeben können.

API-Änderungen

  • Mit FragmentScenario können Sie jetzt ein Design wie Theme.AppCompat [b/119054431] angeben. Das ist eine funktionsgefährdende Änderung.
  • Eine requireView()-Methode wurde hinzugefügt, die einen @NonNull View zurückgibt oder einen IllegalStateException ausgibt [b/120241368].
  • Eine requireParentFragment()-Methode wurde hinzugefügt, die einen @NonNull Fragment zurückgibt oder einen IllegalStateException ausgibt [b/112103783].

Fehlerkorrekturen

  • IllegalStateException behoben: Fehler beim Speichern des Status b/120814739
  • Fragmente, die aus dem Status der gespeicherten Instanz wiederhergestellt werden, erhalten jetzt immer einen Bundle-Wert ungleich null [b/119794496]
  • Entfernte Fragmente verwenden ihr Lifecycle-Objekt nicht mehr, wenn sie wieder hinzugefügt werden [b/118880674].

Version 1.1.0-alpha02

3. Dezember 2018

Neue Funktionen

  • Mit den Kotlin-Erweiterungen von FragmentSzenario können Sie jetzt ein Lambda als Alternative zum Übergeben einer FragmentFactory-Instanz zum Erstellen von Fragmenten verwenden. (aosp/812913)

Fehlerkorrekturen

  • Es wurde eine IllegalStateException bei Verwendung verschachtelter Fragmente auf dem Back-Stack behoben (b/119256498).
  • Absturz bei Verwendung von FragmentScenario.recreate() mit einem FragmentFactory (aosp/820540) wurde behoben.
  • Es wurde ein Problem behoben, bei dem Zielfragmente nicht zugänglich waren, nachdem das Fragment entfernt wurde (aosp/807634).

Version 1.1.0-alpha01

5. November 2018

Dies ist die erste Version des Artefakts fragment-testing und FragmentScenario, die auf den androidx.test:core APIs aufbauen. Weitere Informationen finden Sie in der Dokumentation zu Fragmenttests.

Neue Funktionen

  • Neue FragmentSzenario-Klasse zum isolierten Testen von Fragmenten.
  • Sie können jetzt ein FragmentFactory für jede FragmentManager festlegen, um zu steuern, wie neue Fragmentinstanzen instanziiert werden.
  • Es wurde ein neuer Kotlin-Attribut-Delegate für by viewModels() zum Abrufen von ViewModels aus einem Fragment hinzugefügt.
  • Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt im onStop() eines Fragments abgebrochen.

API-Änderungen

  • Die Anmerkungen zur Null-Zulässigkeit wurden über die Oberfläche der Fragment API erheblich erweitert.

Fehlerkorrekturen

  • Problem beheben, bei dem Fragment-Vorgänge in LiveData fehlgeschlagen sind (b/77944637)

Bekannte Probleme

  • Auf Zielfragmente kann nicht zugegriffen werden, nachdem ein Fragment aus FragmentManager entfernt wurde.
  • fragment-testing hängt von androidx.test:core:1.0.0-beta01 und nicht der richtigen androidx.test:core:1.0.0 ab.