Fragment

Teilen Sie Ihre App in mehrere unabhängige Bildschirme auf, die in einer Aktivität gehostet werden.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
13. August 2025 1.8.9 - -

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von Fragment hinzufügen möchten, 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 App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Cool

dependencies {
    def fragment_version = "1.8.9"

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

Kotlin

dependencies {
    val fragment_version = "1.8.9"

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

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es 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 ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.8

Version 1.8.9

13. August 2025

androidx.fragment:fragment-*:1.8.9 wird veröffentlicht. Version 1.8.9 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Abbrechen einer Vorhersage-Geste für die Zurück-Funktion, die einen Vorgang zum Ausblenden auslöst, dazu führte, dass die nachfolgende Geste bei Verwendung von Animators nicht richtig animiert wurde. (I0a400, b/384765586)
  • Es wurde ein Fehler behoben, bei dem das oberste Fragment bei einer Kombination aus setMaxLifecycle und popBackStack nicht in den Status RESUMED verschoben werden konnte. (I3448b, b/406127576)

Version 1.8.8

4. Juni 2025

androidx.fragment:fragment-*:1.8.8 wird veröffentlicht. Version 1.8.8 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem FragmentManager beim Speichern des Status von Fragmenten, die mit setMaxLifecycle(Lifecycle.State.INITIALIZED) hinzugefügt wurden, abgestürzt ist. Da diese Fragmente nie onCreate() durchlaufen haben, ist kein Status mehr gespeichert und onSaveInstanceState() wird nicht aufgerufen. (I6e37a)

Version 1.8.7

20. Mai 2025

androidx.fragment:fragment-*:1.8.7 wird veröffentlicht. Version 1.8.7 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem FragmentManager nach Pop- und Ersetzungsvorgängen im selben Frame nicht im richtigen Status war. Dies konnte in Verbindung mit dem Entfernen des Backstacks über popBackStack oder die vorhersagende Zurück-Geste zu einem Absturz führen. (I50ad1)
  • Ein Absturz wurde behoben, der durch die Verwendung von AndroidX Transitions verursacht wurde. Dabei wurde versucht, eine nicht gestartete Transition durch schnelle, aufeinanderfolgende Fragmenttransaktionen abzubrechen. Die AndroidX Transition-Bibliothek hat den Übergangsstatus jedoch nicht richtig gelöscht. Weitere Informationen finden Sie unter b/414612221. (Ib5235)

Version 1.8.6

12. Februar 2025

androidx.fragment:fragment-*:1.8.6 wird veröffentlicht. Version 1.8.6 enthält diese Commits.

Fehlerkorrekturen

  • Die FragmentContainerView-Überschreibung von setOnApplyWindowInsetsListener akzeptiert jetzt einen Null-Listener, was dem entspricht, was das Framework zulässt. (I575f0, b/282790626)

Version 1.8.5

30. Oktober 2024

androidx.fragment:fragment-*:1.8.5 wird veröffentlicht. Version 1.8.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem IllegalStateException durch saveBackStack nur ausgelöst wurde, nachdem eine Vorhersage für die Zurück-Geste abgebrochen oder unterbrochen wurde. (I3387d, b/342419080)

Version 1.8.4

2. Oktober 2024

androidx.fragment:fragment-*:1.8.4 wird veröffentlicht. Version 1.8.4 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das schnelle Drücken der System-Zurück-Schaltfläche oder das schnelle Ausführen der Zurück-Geste zum Absturz von Fragmenten führte, wenn AndroidX Transitions verwendet wurde. (Ibc038, b/364804225)
  • Ein Problem in Fragmenten wurde behoben, bei dem das Unterbrechen einer vorhersagenden Zurück-Geste den Fragmentmanager in einen undefinierten Zustand versetzte und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
  • Es wurde ein UninitializedPropertyAccessException in AndroidFragment behoben, der beim dynamischen Ersetzen der Klasse auftrat, die von der AndroidFragment-Instanz verwendet wird. (I12dea)

Version 1.8.3

4. September 2024

androidx.fragment:fragment-*:1.8.3 wird veröffentlicht. Version 1.8.3 enthält diese Commits.

Fehlerkorrekturen

  • FragmentManager berücksichtigt jetzt ausstehende Vorgänge korrekt, wenn die Vorhersage-Geste „Zurück“ ausgeführt wird. Dadurch sollte sichergestellt werden, dass ein System-Backup nicht mehr zu einem IndexOutOfBoundsException führt. (I9ba32, b/342316801)
  • AndroidFragment stürzt nicht mehr ab, wenn es einer Komposition hinzugefügt wird, während der Status der enthaltenden Aktivität/des enthaltenden Fragments bereits gespeichert ist. (I985e9, b/356643968)

Version 1.8.2

24. Juli 2024

androidx.fragment:fragment-*:1.8.2 wird veröffentlicht. Version 1.8.2 enthält diese Commits.

Fehlerkorrekturen

  • AndroidFragment verarbeitet jetzt Fälle richtig, in denen das übergeordnete Fragment in den Fragment-Backstack eingefügt wird. So werden Probleme vom Typ „No view found for id“ vermieden, wenn zum Fragment zurückgekehrt wird. (I94608)
  • Fragmente, die über die FragmentTransaction.add-Methode mit einem ViewGroup hinzugefügt werden, warten jetzt auf onContainerAvailable, bevor sie mit onStart() fortfahren. Das betrifft Nutzer dieser API, z. B. AndroidFragment. Diese Funktion wartet jetzt darauf, dass AndroidFragment wieder in die Komposition eintritt, bevor sie durch onStart() verschoben wird. (I94608)

Version 1.8.1

26. Juni 2024

androidx.fragment:fragment-*:1.8.1 wird veröffentlicht. Version 1.8.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Fragmente ohne Container beim Starten einer vorhersagenden Zurück-Geste sofort DESTROYED wurden. Sie werden jetzt im Status CREATED gehalten, bis die Geste abgeschlossen ist. (If6b83, b/345244539)

Version 1.8.0

12. Juni 2024

androidx.fragment:fragment-*:1.8.0 wird veröffentlicht. Version 1.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.7.0

  • Das fragment-compose-Artefakt enthält jetzt ein AndroidFragment Composable, mit dem Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden können. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese Methode sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mit AndroidViewBinding aufgebläht wurde.
  • Der onBackStackChangeCancelled-Callback auf der OnBackStackChangedListener-Schnittstelle von FragmentManager wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst. Dadurch wird er zeitlich an den onBackStackChangeCommitted-Callback angeglichen.

Version 1.8.0-rc01

29. Mai 2024

androidx.fragment:fragment-*:1.8.0-rc01 wird veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Der onBackStackChangeCancelled-Callback auf der FragmentManagers OnBackStackChangedListener-Schnittstelle wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst. Dadurch wird das Timing des onBackStackChangeCommitted-Callbacks angeglichen. (I5ebfb, b/332916112)

Version 1.8.0-beta01

14. Mai 2024

androidx.fragment:fragment-*:1.8.0-beta01 wird veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ab Fragment 1.7.1: Die Vorhersage für die Rückwärtsbewegung wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein schwarzer Bildschirm angezeigt wurde. (I43037, b/339169168)

Version 1.8.0-alpha02

17. April 2024

androidx.fragment:fragment-*:1.8.0-alpha02 wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Fragment 1.7.0-rc02: Es wurden Logs hinzugefügt, um anzugeben, warum das Festlegen eines sharedElement ohne andere Übergänge nicht ausgeführt wird. (Iec48e)
  • Fragment 1.7.0-rc02: Ein Fehler wurde behoben, bei dem es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)

Version 1.8.0-alpha01

3. April 2024

androidx.fragment:fragment-*:1.8.0-alpha01 wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Mit dem neuen AndroidFragment Composable können Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese kann als direkter Ersatz für AndroidViewBinding Composable verwendet werden.(b/312895363, Icf841)

Änderungen an der Dokumentation

  • Die Dokumentation für die OnBackStackChangedListener-APIs wurde aktualisiert und enthält nun Informationen dazu, wann sie aufgerufen werden und wie sie verwendet werden sollten. (I0bfd9)

Abhängigkeitsupdate

Version 1.7

Version 1.7.1

14. Mai 2024

androidx.fragment:fragment-*:1.7.1 wird veröffentlicht. Version 1.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Die Vorhersage für das Zurückgehen wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein leerer Bildschirm angezeigt wurde. (I43037, b/339169168)

Version 1.7.0

1. Mai 2024

androidx.fragment:fragment-*:1.7.0 wird veröffentlicht. Version 1.7.0 enthält diese Commits.

Unterstützung für die vorhersagende Zurück-Geste

  • Fragmente unterstützen jetzt die Vorhersagefunktion für die Rückwärtsnavigation in der App, wenn Animator oder AndroidX Transition 1.5.0 verwendet wird. So können Nutzer mit der Zurück-Geste das vorherige Fragment aufrufen, indem sie den Animator/die Transition durchsuchen, bevor sie entscheiden, ob sie die Transaktion durch Abschluss der Geste oder durch Abbrechen bestätigen möchten.
Übergangssystem XML-Ressource Unterstützt die intelligente „Zurück“-Geste
Animation R.anim Nein
Animator R.animator Ja
Framework Transition R.transition Nein
AndroidX Transition mit Transition 1.4.1 oder niedriger R.transition Nein
AndroidX Transition mit Transition 1.5.0 R.transition Ja

Wenn nach der Aktivierung der Vorhersage-Geste Probleme mit der Unterstützung der Vorhersage-Geste in Fragmenten auftreten, reichen Sie bitte ein Problem für Fragment ein und fügen Sie ein Beispielprojekt bei, in dem das Problem reproduziert wird. Sie können die Vorhersage für die Zurück-Geste mit FragmentManager.enabledPredictiveBack(false) im onCreate() Ihrer Aktivität deaktivieren.

FragmentManager.OnBackStackChangedListener() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen.

Fragment Compose-Artefakt

Es wurde ein neues fragment-compose-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.

Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content-Erweiterungsmethode für Fragment, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt.

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

Version 1.7.0-rc02

17. April 2024

androidx.fragment:fragment-*:1.7.0-rc02 wird veröffentlicht. Version 1.7.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurden Logs hinzugefügt, die angeben, warum das Festlegen von sharedElement ohne andere Übergänge fehlschlägt. (Iec48e)
  • Es wurde ein Fehler behoben, durch den es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)

Version 1.7.0-rc01

3. April 2024

androidx.fragment:fragment-*:1.7.0-rc01 wird veröffentlicht. 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 veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.

API-Änderungen

  • FragmentHostCallback wird jetzt in Kotlin geschrieben, damit die Nullable-Eigenschaft des generischen Typs des Hosts mit der Nullable-Eigenschaft des Rückgabetyps von onGetHost() übereinstimmt. (I40af5)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem ein Fragment, das sich nicht in einem Container befindet, nie zerstört wurde, wenn ein Predictive Back-Vorgang für dieses Fragment ausgeführt wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand versetzt. (Ida0d9)
  • Es wurde ein Problem in Fragmenten behoben, bei dem durch Unterbrechen eingehender Übergänge mit einer vorhersagenden Zurück-Geste die eingehende Ansicht zerstört und ein leerer Bildschirm angezeigt wurde. (Id3f22, b/319531491)

Version 1.7.0-alpha10

7. Februar 2024

androidx.fragment:fragment-*:1.7.0-alpha10 wird veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.

Fehlerkorrekturen

  • Das bekannte Problem in der vorherigen Fragment-Version wurde behoben. Wenn die Predictive Back-Unterstützung von Fragment für Animator oder AndroidX Transition verwendet wurde, haben Fragments eine NullPointerException von handleOnBackProgressed ausgegeben, wenn noch nie ein FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. (I7c835)

Version 1.7.0-alpha09

24. Januar 2024

androidx.fragment:fragment-*:1.7.0-alpha09 wird veröffentlicht. Version 1.7.0-alpha09 enthält diese Commits.

Fragment Compose-Artefakt

Es wurde ein neues fragment-compose-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.

Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content-Erweiterungsmethode für Fragment, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein 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() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen. (214b87)

Bekanntes Problem

  • Wenn Sie die Unterstützung für die vorhersagende Zurück-Geste von Fragment für Animator oder AndroidX Transition verwenden, lösen Fragmente eine NullPointerException von handleOnBackProgressed aus, wenn noch nie ein FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. Wenn Sie einen Listener manuell hinzufügen, wird der Absturz umgangen. Eine Korrektur für dieses Problem wird in der nächsten Version von Fragments verfügbar sein.

Version 1.7.0-alpha08

10. Januar 2024

androidx.fragment:fragment-*:1.7.0-alpha08 wird veröffentlicht. 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 veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein NullPointerException behoben, der durch das Festlegen einer Übergangsanimation für ein gemeinsames Element und das gleichzeitige Versäumnis, auch einen enter/exitTransition festzulegen, verursacht wurde. (I8472b)
  • Über Fragment 1.6.2: Wenn das Fragment eines FragmentContainerView aufgebläht wird, sind seine Status wie FragmentManager, Host und ID jetzt im onInflate-Callback verfügbar. (I1e44c, b/307427423)
  • Fragment 1.6.2: Wenn Sie clearBackStack verwenden, um eine Gruppe von Fragmenten zu entfernen, wird das ViewModel aller verschachtelten Fragmente jetzt gelöscht, wenn das ViewModels des übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)

Version 1.7.0-alpha06

4. Oktober 2023

androidx.fragment:fragment-*:1.7.0-alpha06 wird veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.

Abhängigkeitsupdate

  • „Fragments“ wurde aktualisiert, um von der neuen animateToStart API abzuhängen, die in Transition 1.5.0-alpha04 hinzugefügt wurde.

Version 1.7.0-alpha05

20. September 2023

androidx.fragment:fragment-*:1.7.0-alpha05 wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Fragmente unterstützen jetzt die intelligente „Zurück“-Geste, wenn AndroidX-Übergänge verwendet werden. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Transition wechseln, bevor Sie die Transaktion über die „Fertig“-Geste bestätigen oder abbrechen. Sie müssen die Transition 1.5.0-alpha03-Version verwenden, um diese Funktion zu aktivieren. (Ib49b4, b/285175724)

Bekannte Probleme

  • Derzeit gibt es ein Problem, bei dem nach dem Abbrechen einer Zurück-Geste mit einem Übergang beim nächsten Starten der Zurück-Geste der Übergang nicht ausgeführt wird und ein leerer Bildschirm angezeigt wird. Das kann an einem Problem in der Transition-Bibliothek liegen. (b/300157785). Wenn dieses Problem auftritt, melden Sie es bitte für Fragment und fügen Sie ein Beispielprojekt bei, mit dem sich das Problem reproduzieren lässt. Sie können die Vorhersage für die Zurück-Geste mit FragmentManager.enabledPredictiveBack(false) im onCreate() Ihrer Aktivität deaktivieren.

Version 1.7.0-alpha04

6. September 2023

androidx.fragment:fragment-*:1.7.0-alpha04 wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Fragmente beim Abbrechen einer vorhersagenden Zurück-Geste nicht den richtigen Lebenszyklusstatus erreicht haben. (I7cffe, b/297379023)
  • Es wurde ein Regressionsfehler behoben, durch den Animationen mit Übergängen ausgeführt werden konnten. (I59f36)
  • Ein Problem wurde behoben, das beim Verwenden von „Vorhersagende Zurück-Geste“ mit Fragmenten auftrat. Wenn versucht wurde, zweimal kurz hintereinander zum vorletzten Fragment im Backstack zurückzukehren, stürzte die App ab. (Ifa1a4)

Version 1.7.0-alpha03

23. August 2023

androidx.fragment:fragment-*:1.7.0-alpha03 wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der intelligenten „Zurück“-Geste dazu führte, dass das erste Fragment im Backstack des Fragmentmanagers übersprungen und die Aktivität beendet wurde, wenn die System-„Zurück“-Geste über die 3‑Schaltflächen-Navigation oder die intelligente „Zurück“-Geste verwendet wurde. (I0664b, b/295231788)

Version 1.7.0-alpha02

9. August 2023

androidx.fragment:fragment-*:1.7.0-alpha02 wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie ab API 34 Fragmente mit vorhersagbaren Zurück-Gesten verwenden und ein Übergangssystem nutzen, das keine Suche unterstützt (Animations, Transitions), oder gar keine Übergänge, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Zurück-Aktion ausgeführt wird. (I8100c)

Version 1.7.0-alpha01

7. Juni 2023

androidx.fragment:fragment-*:1.7.0-alpha01 wird veröffentlicht. Diese Version wird in einem internen Branch entwickelt.

Neue Funktionen

  • Bei Verwendung von Animator wird jetzt die intelligente „Zurück“-Geste in Fragmenten unterstützt. So können Sie mit der Zurück-Geste das vorherige Fragment mit Ihrem benutzerdefinierten Animator aufrufen, bevor Sie die Transaktion mit der Geste „Abgeschlossen“ bestätigen oder abbrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie die experimentelle enablePredictiveBack() verwenden und false übergeben.

Version 1.6

Version 1.6.2

1. November 2023

androidx.fragment:fragment-*:1.6.2 wird veröffentlicht. Version 1.6.2 enthält diese Commits.

Fehlerkorrekturen

  • Wenn das Fragment eines FragmentContainerView instanziiert wird, sind seine Status wie FragmentManager, Host und ID jetzt im onInflate-Callback verfügbar. (I1e44c, b/307427423)
  • Wenn Sie clearBackStack verwenden, um eine Gruppe von Fragmenten zu entfernen, wird das ViewModel aller verschachtelten Fragmente jetzt gelöscht, wenn das ViewModels des übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)

Version 1.6.1

26. Juli 2023

androidx.fragment:fragment-*:1.6.1 wird veröffentlicht. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der gespeicherte Status, der gespeichert wurde, als die Aktivität beendet, aber nicht zerstört wurde, fälschlicherweise im Cache gespeichert wurde, auch nachdem die Fragmentinstanz wieder in den Status RESUMED verschoben wurde. Dadurch würde der zwischengespeicherte Status wiederverwendet, wenn sich diese Fragmentinstanz im Backstack befand, als das Fragment mit der API für mehrere Backstacks gespeichert und wiederhergestellt wurde. (I71288, b/246289075)

Abhängigkeitsupdate

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

Version 1.6.0

7. Juni 2023

androidx.fragment:fragment-*:1.6.0 wird veröffentlicht. 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 Status wird jetzt immer in einem Bundle gespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt.
  • Die FragmentManager.OnBackStackChangedListener-Schnittstelle wurde um zwei zusätzliche Callbacks onBackStackChangeStarted und onBackStackChangeCommitted erweitert, die mit jedem Fragment aufgerufen werden, kurz bevor sie dem Fragment-Backstack hinzugefügt bzw. daraus entfernt werden, und kurz nachdem die Transaktion übernommen wurde.
  • FragmentStrictMode hat ein neues WrongNestedHierarchyViolation hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht dem childFragmentManager des übergeordneten Elements hinzugefügt wurde.
  • Die APIs Fragment und FragmentManager, die Intent oder IntentSender verwenden, sind jetzt korrekt mit @NonNull annotiert, um zu verhindern, dass ein Nullwert übergeben wird. Ein Nullwert würde immer sofort die entsprechenden Android-Framework-APIs zum Absturz bringen, die von diesen Methoden aufgerufen werden.
  • DialogFragment bietet jetzt über die requireComponentDialog() API Zugriff auf die zugrunde liegende ComponentDialog.
  • Das Fragment hängt jetzt von Lifecycle 2.6.1 ab.
  • Das Fragment ist jetzt von SavedState 1.2.1 abhängig.
  • Das Fragment hängt jetzt von ProfileInstaller 1.3.0 ab.
  • Das fragment-testing-manifest-Artefakt trennt die Manifesteinträge von den anderen 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.

Version 1.6.0-rc01

10. Mai 2023

androidx.fragment:fragment-*:1.6.0-rc01 wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das ActivityResult mit dem falschen Anforderungscode gesendet wurden, wenn mehrere startActivityForResult-Anforderungen nacheinander gestellt wurden. (If0b9d, b/249519359)
  • Ein Problem wurde behoben, bei dem die onBackStackChangeListener-Callbacks für Transaktionen gesendet wurden, die den Backstack nicht geändert haben, wenn sie mit Transaktionen kombiniert wurden, die den Backstack geändert haben. (I0eb5c, b/279306628)

Version 1.6.0-beta01

19. April 2023

androidx.fragment:fragment-*:1.6.0-beta01 wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie postponeEnterTransition mit einem Zeitlimit verwenden und das zurückgestellte Fragment dann ersetzen, wird es nicht mehr geleakt. (I2ec7d, b/276375110)
  • Die neuen onBackStackChangeStarted- und onBackStackChangeCommitted-Callbacks senden jetzt nur noch einmal ein Fragment, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)

Version 1.6.0-alpha09

5. April 2023

androidx.fragment:fragment-*:1.6.0-alpha09 wird veröffentlicht. 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 für die Fragmente commitNow(), executePendingTransactions() und popBackStackImmediate() wurden mit @MainThread annotiert. Das bedeutet, dass sie jetzt alle Build-Fehler auslösen, wenn sie nicht über den Hauptthread aufgerufen werden, anstatt erst zur Laufzeit zu fehlschlagen. (Ic9665, b/236538905)

Fehlerkorrekturen

  • Es wurde ein Fehler in FragmentManager behoben, durch den das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668)
  • Die Callbacks OnBackStackChangedListener onBackStackChangeStarted und onBackStackChangeCommitted werden jetzt nur noch ausgeführt, wenn sich der FragmentManager-Backstack ändert. (I66055, b/274788957)

Version 1.6.0-alpha08

22. März 2023

androidx.fragment:fragment-*:1.6.0-alpha08 wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.

Verhaltensänderung

  • Der Zeitpunkt des OnBackStackChangedListener.onBackStackChangeCommited-Callbacks wurde angepasst, sodass er vor der Ausführung von Fragmentvorgängen ausgeführt wird. So wird sichergestellt, dass dem Callback niemals ein Fragment übergeben wird, das getrennt ist. (I66a76, b/273568280)

Fehlerkorrekturen

  • Fragment 1.5.6: Ein Problem wurde behoben, bei dem der Aufruf von clearFragmentResultListener innerhalb eines setFragmentResultListener nicht funktionierte, wenn Lifecycle bereits STARTED war und ein Ergebnis bereits verfügbar war. (If7458)

Abhängigkeitsupdates

Version 1.6.0-alpha07

8. März 2023

androidx.fragment:fragment-*:1.6.0-alpha07 wird veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.

Fehlerkorrekturen

  • Fragment 1.5.6: Es wurde ein Problem behoben, bei dem das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte. (50f098, b/244336571)

Version 1.6.0-alpha06

22. Februar 2023

androidx.fragment:fragment-*:1.6.0-alpha06 wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.

Verhaltensänderung

  • Der neue onBackStackChangedStarted-Callback in FragmentManager von onBackStackChangedListener wird jetzt ausgeführt, bevor Fragmente in ihre Zielstatus übergehen. (I34726)

Version 1.6.0-alpha05

8. Februar 2023

androidx.fragment:fragment-*:1.6.0-alpha05 wird veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Die FragmentManager.OnBackStackChagnedListener-Schnittstelle bietet jetzt zwei zusätzliche Rückrufe, onBackStackChangeStarted und onBackStackChangeCommitted, die zusätzliche Informationen und Steuerungsmöglichkeiten bieten, wenn sich der Backstack in der FragmentManager ändert. (Ib7ce5, b/238686802)

API-Änderungen

  • Die APIs Fragment und FragmentManager, die Intent oder IntentSender verwenden, sind jetzt korrekt mit @NonNull annotiert, um zu verhindern, dass ein Nullwert übergeben wird. Ein Nullwert würde immer sofort die entsprechenden Android-Framework-APIs zum Absturz bringen, die von diesen Methoden aufgerufen werden. (I06fd4)

Version 1.6.0-alpha04

7. Dezember 2022

androidx.fragment:fragment-*:1.6.0-alpha04 wird veröffentlicht. 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 View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht dem childFragmentManager des übergeordneten Elements hinzugefügt wurde. (I72521, b/249299268)

Geändertes Verhalten

  • Fragmente stellen jetzt ihren SavedStateRegistry-Zustand vor onAttach() wieder her. So ist er in allen Methoden des Aufwärtslebenszyklus verfügbar. (I1e2b1)

API-Änderungen

  • Das fragment-testing-manifest-Artefakt trennt die Manifesteinträge von den anderen 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

  • Fragment 1.5.5: Der Status ViewModel wird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (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 sind 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

  • Es wurden Regressionen behoben, die durch die Integration der neuen Provider-Callback-Schnittstellen (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 sind veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Aus Fragment 1.5.2: Es wurde ein Problem behoben, bei dem die gleichzeitige Ausführung einer popBackStack()- und einer replace()-Transaktion dazu führen konnte, dass für das Beenden von Fragmenten die falsche Animation-/Animator-Methode ausgeführt wurde. (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 sind veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.

Geändertes Verhalten

  • 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 Status wird jetzt immer in einem Bundle gespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt. (b/207158202)

Fehlerkorrekturen

  • Fragment 1.5.1: Es wurde ein Regressionsfehler in DialogFragmentCallbacksDetector behoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (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 sind veröffentlicht. Version 1.5.7 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie postponeEnterTransition mit einem Zeitlimit verwenden und das zurückgestellte Fragment dann ersetzen, wird es nicht mehr geleakt. (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 sind veröffentlicht. Version 1.5.6 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte. (50f098, b/244336571)
  • Ein Problem wurde behoben, durch das der Aufruf von clearFragmentResultListener innerhalb eines setFragmentResultListener nicht funktionierte, wenn das 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 sind veröffentlicht. Version 1.5.5 enthält diese Commits.

Fehlerkorrekturen

  • Der Status ViewModel wird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung für Fragmente gespeichert. (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 sind veröffentlicht. Version 1.5.4 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem die Weiterleitung an untergeordnete Fragmente fehlschlug, wenn eine benutzerdefinierte FragmentController mit einem Host verwendet wurde, der keine Provider-Callback-Schnittstelle (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) implementiert, und die eingestellte Dispatch-Funktion aufgerufen 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 sind veröffentlicht. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Backstack die Callbacks onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() und onConfigurationChanged() erhielten. (I34581, I8dfe6, b/242570955)
  • Verschachtelte untergeordnete Fragmente erhalten nicht mehr mehrere 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 sind 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 für das Beenden von Fragmenten die falsche Animation/Animator ausgeführt wurde. (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 sind veröffentlicht. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Regressionsfehler in DialogFragmentCallbacksDetector behoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (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 sind veröffentlicht. Version 1.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.4.0

  • CreationExtras-Integration: Fragment kann jetzt über Lifecycle 2.5.0-CreationExtras ein zustandsloses ViewModelProvider.Factory bereitstellen.
  • Integration von Komponentendialogen: DialogFragment verwendet jetzt ComponentDialog über Activity 1.5.0 als Standarddialog, der von onCreateDialog() zurückgegeben wird.
  • Refactoring des gespeicherten Instanzstatus: Bei Fragmenten hat sich die Art und Weise geändert, wie der Instanzstatus gespeichert wird. So soll klarer ersichtlich sein, welcher Status im Fragment gespeichert wurde und woher der Status stammt. Die aktuellen Änderungen umfassen Folgendes:
    • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einem Bundle anstatt direkt in einem benutzerdefinierten Parcelable.
    • Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht ausgeliefert wurden, werden jetzt separat vom internen Status der FragmentManager gespeichert.
    • Der Status, der mit jedem einzelnen Fragment verknüpft ist, wird jetzt separat vom internen Status des FragmentManager gespeichert. So können Sie die Menge des gespeicherten Status, der mit einem einzelnen Fragment verknüpft ist, mit den eindeutigen IDs im Fragment-Debug-Logging korrelieren.

Weitere Änderungen

  • FragmentStrictMode bietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu umgehen, indem allowViolation() mit dem Klassennamen verwendet wird.
  • Die Fragment-APIs zum Bereitstellen eines Menüs für das ActionBar Ihrer Aktivität wurden eingestellt. Die in Aktivität 1.4.0 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste 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 sind veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Refactoring des gespeicherten Instanzstatus

  • Der Zustand, der jedem einzelnen Fragment zugeordnet ist, wird jetzt separat vom internen Zustand des FragmentManager gespeichert. So können Sie die Menge des gespeicherten Zustands, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Fragment-Debug-Logging korrelieren. (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 sind veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • DialogFragment hat eine neue dismissNow-Methode hinzugefügt, die commitNow verwendet, um mit der showNow-Funktion übereinzustimmen. Dadurch wird das Dialog nicht sofort geschlossen, sondern nur der Status des FragmentManager synchron aktualisiert. (I15c36, b/72644830)

Refactoring des gespeicherten Instanzstatus

  • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einem Bundle anstatt direkt in einem benutzerdefinierten Parcelable. Dies ist der erste Schritt, um mehr Transparenz darüber zu schaffen, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)
  • Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht zugestellt wurden, werden jetzt separat vom internen Status des FragmentManager gespeichert. So können Sie besser nachvollziehen, welche Ergebnisse als Teil des gespeicherten Instanzstatus 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 sind 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 sind veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Fragment-APIs zum Bereitstellen eines Menüs für die ActionBar Ihrer Aktivität wurden eingestellt, da sie Ihr Fragment eng an Ihre Aktivität binden 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 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 sind 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)

Geändertes Verhalten

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 sind veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode bietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu 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 sind veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

Fehlerkorrekturen

  • Fragment 1.4.1FragmentContainerView: FragmentContainerView löst keine Ausnahme für einen ungültigen Status mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)
  • Aus Fragment 1.4.1: Wenn Sie eine benutzerdefinierte ownerProducer-Lambda-Funktion mit der Lazy-Funktion by viewModels() verwenden, wird jetzt die defaultViewModelProviderFactory des Inhabers verwendet, wenn keine benutzerdefinierte ViewModelProvider.Factory angegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513)
  • Ein Absturz beim erstmaligen Zugriff auf eine ViewModel über einen registerForActivityResult()-Callback einer Fragment wurde behoben. (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 sind veröffentlicht. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Bei FragmentContainerView wird keine Ausnahme für einen unzulässigen Status mehr ausgelöst, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)
  • Wenn Sie eine benutzerdefinierte ownerProducer-Lambda-Funktion mit der Lazy-Funktion by viewModels() verwenden, wird jetzt die defaultViewModelProviderFactory des entsprechenden Inhabers verwendet, wenn keine benutzerdefinierte ViewModelProvider.Factory angegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (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 sind 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 überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. Die FragmentStrictMode.Policy, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy() für ein FragmentManager festgelegt werden. Diese Richtlinie gilt für diesen FragmentManager und transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. Weitere Informationen finden Sie unter StrictMode für Fragmente.
  • FragmentContainerView bietet jetzt eine getFragment()-Methode, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Hier wird dieselbe Logik wie bei findFragmentById() mit der ID von FragmentContainerView verwendet, der Aufruf kann aber verkettet werden.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario implementiert jetzt Closeable. Sie können es also mit der use-Methode von Kotlin oder try-with-resources verwenden.

  • FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll.

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

Mehrere Backstacks

Der FragmentManager verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack() verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

In dieser Version werden diese Mechanismen durch drei neue FragmentManager-APIs erweitert: 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 jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.

saveBackStack() funktioniert ähnlich wie popBackStack(), da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:

  • saveBackStack() ist immer inklusive.
  • Im Gegensatz zu popBackStack(), bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht leeren Namen ausgeführt haben.
  • 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:

  • Für jede Fragmenttransaktion muss setReorderingAllowed(true) verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit FragmentManager nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.

Ähnlich wie bei saveBackStack(), restoreBackStack() und clearBackStack(), mit denen ein zuvor gespeicherter Backstack wiederhergestellt bzw. gelöscht wird, passiert bei beiden nichts, wenn Sie saveBackStack() nicht zuvor mit demselben Namen aufgerufen haben.

Weitere Informationen finden Sie unter Multiple back stacks: A deep dive.

Version 1.4.0-rc01

3. November 2021

androidx.fragment:fragment:1.4.0-rc01 wurde 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 sind veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Übergeordnete Fragmente senden onHiddenChanged() jetzt an die gesamte Hierarchie, bevor sie ihren eigenen Callback starten. (Iedc20, b/77504618)
  • Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit einer geöffneten Tastatur zu einem Fragment mit einer RecyclerView wechseln. (I8b842, b/196852211)
  • DialogFragment verwendet jetzt setReorderingAllowed(true) für alle Transaktionen, die beim Aufrufen von show(), showNow() oder dismiss() erstellt werden. (Ie2c14)
  • Die extrem lange Lint-Warnung 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 sind veröffentlicht. Version 1.4.0-alpha10 enthält diese Commits.

Lint

  • Die Lint-Warnung DetachAndAttachFragmentInSameFragmentTransaction wurde hinzugefügt, um zu erkennen, wenn sowohl detach() als auch attach() für dasselbe Fragment im selben FragmentTransaction aufgerufen werden. Da sich diese komplementären Vorgänge gegenseitig aufheben, wenn sie in derselben Transaktion ausgeführt werden, müssen sie in separate Transaktionen aufgeteilt werden, damit sie tatsächlich etwas bewirken. (aosp/1832956, b/200867930)
  • Der Lint-Fehler FragmentAddMenuProvider wurde hinzugefügt, um die Verwendung des Fragment-Lebenszyklus für den Fragment-View-Lebenszyklus zu korrigieren, wenn die addMenuProvider API von MenuHost verwendet wird. (aosp/1830457, b/200326272)

Aktualisierungen der Dokumentation

  • Die Einstellungsmitteilung für APIs, die jetzt von den Activity Result APIs (startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions und onRequestPermissionsResult) verarbeitet werden, wurde um weitere Details ergänzt. (cce80f)
  • Die Mitteilung zur Einstellung von onActivityCreated() für Fragment und DialogFragment wurde um weitere Details ergänzt. (224db4)

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 sind veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt clearBackStack(name) aufrufen, um alle 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 Nullable-Eigenschaft richtig berücksichtigt. (If694a, b/189629145)
  • FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem der Status eines Fragments, das mit setReorderingAllowed(true) hinzugefügt und dann sofort vor der Ausführung ausstehender Transaktionen entfernt wurde, nicht richtig bereinigt wurde. (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 sind veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • Die UseRequireInsteadOfGet-Lint-Prüfung wurde verbessert, um redundante Klammern besser zu verarbeiten. (I2d865)
  • Die UseGetLayoutInflater-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu berücksichtigen. (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 nennenswerte Ä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 sind veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit mehreren Backstacks wurde behoben, das beim schnellen Wechsel zwischen Backstacks auftrat und dazu führte, dass beim Wiederherstellen eines FragmentTransaction ein IllegalStateException oder eine zweite Kopie eines Fragments angezeigt wurde. (I9039f)
  • Ein Problem wurde behoben, durch das FragmentManager eine Kopie des zuvor über saveBackStack() gespeicherten Status beibehalten hat, auch nachdem dieser Status wiederhergestellt wurde. (Ied212)
  • Die dismissAllowingStateLoss()-Methode von DialogFragment stürzt nicht mehr ab, wenn Sie sie aufrufen, nachdem der Status gespeichert wurde, wenn das DialogFragment speziell über die show(FragmentTransaction, String)-Methode 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 sind veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Aus Fragment 1.3.6: Die Ansicht des Fragments wird jetzt richtig auf GONE gesetzt, wenn hide() verwendet wird und die Stammansicht transitionGroup=”true” festgelegt hat. (aosp/1766655, b/193603427)
  • Ab Fragment 1.3.6: FragmentActivity wird der gespeicherte Status jetzt immer als erster Vorgang in den überschriebenen Lebenszyklus-Callbacks entsperrt. (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 sind veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

  • FragmentManager verwendet jetzt SavedStateRegistry, um den Status zu speichern. Die Methoden saveAllState() und restoreSavedState() wurden in FragmentController ebenfalls verworfen. Wenn Sie FragmentController verwenden, um Fragmente außerhalb von FragmentActivity zu hosten, sollte Ihr FragmentHostCallbacks SavedStateRegistryOwner implementieren. (Iba68e, b/188734238)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Aufruf von saveBackStack() als Teil der Unterstützung mehrerer Backstacks fehlschlug, wenn er gleichzeitig mit der Ausführung eines FragmentTransaction erfolgte, in dem replace() verwendet wurde. (I73137)
  • Ein NullPointerException wurde behoben, der nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen bei Verwendung der restoreBackStack() API für die Unterstützung mehrerer Backstacks auftreten konnte. Außerdem wurde ein Problem behoben, bei dem setReorderingAllowed(true) nicht für alle Transaktionen geprüft wurde. (I8c593)
  • Ein Problem wurde behoben, bei dem FragmentManager fälschlicherweise weiterhin den zuvor gespeicherten Status von Fragmenten wiederhergestellt hat, auch nachdem diese Fragmente aus FragmentManager entfernt wurden. Dadurch ist der gespeicherte Status im Laufe der Zeit immer weiter gewachsen. (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 sind veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Alle StrictMode-Klassen für Fragmente 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, die den übergeordneten Container enthält, dem das Fragment hinzugefügt worden wäre. (Ic33a7)
    • Für WrongFragmentContainerViolation gibt es jetzt eine detailliertere Fehlermeldung, die den Container enthält, dem das Fragment hinzugefügt wurde. (Ib55f8)
    • Die Anwendungsfallklassen für TargetFragmentUsageViolation enthalten jetzt detailliertere Fehlermeldungen, die das Fragment, das den Verstoß verursacht, und alle anderen enthaltenen Informationen enthalten. (Icc6ac)
    • Die Klassen, die RetainInstanceUsageViolation erweitern, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55)
    • FragmentReuseViolation enthält jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)
    • SetUserVisibleHintViolation enthält jetzt eine detailliertere Fehlermeldung, die angibt, auf welchen Wert der für den Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)

Geändertes Verhalten

  • Die Einschränkung für den Aufruf von fitsSystemWindows auf einem FragmentContainerView wurde zurückgesetzt. Ihre App stürzt dadurch nicht mehr ab. (6b8ddd, b/190622202)

Fehlerkorrekturen

  • Aus Fragment 1.3.5: Es wurde eine Regression bei Übergängen mit gemeinsam genutzten Elementen behoben, die in Fragment 1.3.4 durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background festgelegt) und bei gemeinsam genutzten Elementen werden keine IndexOutOfBoundsExceptions mehr ausgegeben. (I16484, b/188679569, b/188969304)
  • Die FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730)
  • Der Lint-Check OnCreateDialogIncorrectCallback stürzt nicht mehr ab, wenn eine Variable der obersten 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 sind veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode protokolliert jetzt immer Verstöße, wenn das Logging über die FragmentManager aktiviert ist, unabhängig von der aktuellen Richtlinie für den strengen Modus. (I02df6, b/187872638)
  • FragmentStrictMode unterstützt jetzt das Ausschließen bestimmter Fragment-Klassen aus dem strengen Modus Violation, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)

  • Die Klasse FragmentStrictMode Violation wurde erweitert, um Strukturinformationen basierend auf den einzelnen Verstößen hinzuzufügen. So können Sie genau nachvollziehen, was den Verstoß verursacht hat. Das entsprechende Fragment (If5118, b/187871150) ist jeweils in Violation enthalten:

    • WrongFragmentContainerViolation enthält jetzt die ViewGroup, der die Fragment hinzugefügt werden sollte. (I83c75, b/187871150)
    • TargetFragmentUsageViolationwurde in SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation und GetTargetFragmentRequestCodeUsageViolation aufgeteilt. SetTargetFragmentUsageViolation enthält das Zielfragment und den Anfragecode. (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 einzufügen.(I5dbbc, b/187871150)
    • FragmentReuseViolation enthält jetzt die eindeutige ID der vorherigen Instanz von Fragment, die den Verstoß verursacht hat. (I0544d, b/187871150)
    • RetainInstanceUsageViolation ist jetzt abstrakt und hat zwei Unterklassen, SetRetainInstanceUsageViolation und GetRetainInstanceUsageViolation, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)

Geändertes Verhalten

  • FragmentContainerView löst jetzt eine Ausnahme aus, wenn versucht wird, das Attribut fitsSystemWindow programmatisch oder über XML zu ändern. Insets sollten von 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 sind veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

Neue Funktionen

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

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll. (I46652)

Mehrere Backstacks

Der FragmentManager verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack() verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

In 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 jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.

saveBackStack() funktioniert ähnlich wie popBackStack(), da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:

  • saveBackStack() ist immer inklusive.
  • Im Gegensatz zu popBackStack(), bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht leeren Namen ausgeführt haben.
  • 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:

  • Für jede Fragmenttransaktion muss setReorderingAllowed(true) verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit FragmentManager nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.

Ähnlich wie bei saveBackStack() passiert bei restoreBackStack() nichts, wenn Sie saveBackStack() nicht zuvor mit demselben Namen aufgerufen haben. (b/80029773)

StrictMode für Fragmente

Die FragmentStrictMode-APIs bieten Laufzeitprüfungen, mit denen Sie überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. Die FragmentStrictMode.Policy, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy() für ein FragmentManager festgelegt werden. Diese Richtlinie gilt für diesen FragmentManager und transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. (#123, #131, #150, b/143774122)

  • Mit detectFragmentReuse() wird erkannt, ob eine zuvor entfernte Fragment-Instanz wieder einer FragmentManager hinzugefügt wird. Sie sollten niemals mit einer Fragment-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie zerstört und aus einem FragmentManager entfernt wurde. (#142, b/153738653)
  • detectFragmentTagUsage() erkennt, wenn Sie das <fragment>-Tag in Ihrem Layout-XML verwenden. Sie sollten immer FragmentContainerView verwenden, wenn Sie Fragmente als Teil Ihres Layouts einfügen. (#141, b/153738235)
  • detectWrongFragmentContainer() erkennt, wenn Sie einem Container, der kein FragmentContainerView ist, ein Fragment hinzufügen. Verwenden Sie immer FragmentContainerView als Container für Fragmente in Ihrem Layout. (#146, b/181137036)
  • detectRetainInstanceUsage() erkennt, wenn Sie die verworfenen APIs setRetainInstance() oder getRetainInstance() verwenden. (#140, b/153737954)
  • detectSetUserVisibleHint() erkennt, wenn Sie die eingestellte 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

  • Der UseGetLayoutInflater-Lint-Check warnt jetzt, wenn LayoutInflater.from(Context) in einem DialogFragment verwendet wird. Sie sollten immer die getLayoutInflater()-Methode des Dialogfragments verwenden, um den entsprechenden Wert für LayoutInflater zu erhalten. (#156, b/170781346)
  • Der DialogFragmentCallbacksDetector-Lint-Check warnt jetzt, wenn setOnCancelListener oder setOnDismissListener in der Methode onCreateDialog() eines DialogFragment aufgerufen wird. Diese Listener gehören zum DialogFragment selbst. Sie sollten onCancel() und onDismiss() überschreiben, um diese Callbacks zu erhalten. (#171, b/181780047, b/187524311)

Fehlerkorrekturen

  • Ab Fragment 1.3.4: Es wurde ein Regressionsfehler behoben, der in Fragment 1.3.3 eingeführt wurde, wenn die ViewTreeViewModelStoreOwner.get()-API mit ViewModelProvider oder die Jetpack Compose-Methode viewModel() in einem Fragment verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt die ViewModelProvider.Factory verwendet, die von Ihrem Fragment bereitgestellt wird, wenn sie getDefaultViewModelProviderFactory() überschreibt (wie bei mit @AndroidEntryPoint annotierten Fragmenten bei Verwendung von Hilt). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eine SavedStateViewModelFactory erstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Ab Fragment 1.3.4: Wenn FragmentContainerView unter API 29 verwendet wird, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben. (I1bb78, b/186012452)
  • Aus Fragment 1.3.4: Sie können jetzt Ihr Parcelable nach dem Beenden des Prozesses aus dem Fragmentergebnis-Bundle abrufen. (I65932, b/187443158)
  • Ab Fragment 1.3.4: Wenn Sie einen Übergang mit gemeinsam genutzten Elementen für eine ViewGroup ausführen und transitionGroup auf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)

Externe Beiträge

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 sind veröffentlicht. Version 1.3.6 enthält diese Commits.

Fehlerkorrekturen

  • Fragment 1.4.0-alpha03: FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730)
  • Die Ansicht des Fragments wird jetzt richtig auf GONE gesetzt, wenn hide() verwendet wird und für die Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • FragmentActivity entsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den überschriebenen Lebenszyklus-Callbacks. (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 sind veröffentlicht. Version 1.3.5 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Regression bei Übergängen mit gemeinsam genutzten Elementen behoben, die in Fragment 1.3.4 durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background festgelegt) und bei gemeinsam genutzten Elementen werden keine IndexOutOfBoundsExceptions mehr ausgegeben. (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 sind veröffentlicht. Version 1.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Regressionsfehler behoben, der in Fragment 1.3.3 eingeführt wurde, wenn die ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder der Jetpack Compose-Methode viewModel() in einem Fragment bei Verwendung von Hilt verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt die ViewModelProvider.Factory verwendet, die von Ihrem Fragment bereitgestellt wird, wenn getDefaultViewModelProviderFactory() überschrieben wird (wie bei mit @AndroidEntryPoint annotierten Fragmenten). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eine SavedStateViewModelFactory erstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Wenn Sie FragmentContainerView in API 29 verwenden, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben. (I1bb78, b/186012452)
  • Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Wenn Sie eine Übergangsanimation für ein gemeinsames Element für eine ViewGroup ausführen und transitionGroup für die ViewGroup auf „false“ gesetzt ist, wird die Übergangsanimation jetzt korrekt ausgeführt. (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 sind veröffentlicht. Version 1.3.3 enthält diese Commits.

Neue Funktionen

  • Die Verwendung von SavedStateViewModelFactory funktioniert jetzt, wenn sie mit dem SavedStateRegistryOwner verwendet wird, das durch die Verwendung von ViewTreeSavedStateRegistryOwner.get() mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)

Fehlerkorrekturen

  • Es wurde ein Regressionsfehler behoben, der in Fragment 1.3.2 eingeführt wurde und dazu führte, dass popEnter-Animationen nicht ausgeführt wurden, wenn ein FragmentTransaction mit einem setPrimaryNavFragment-Vorgang wie den von NavHostFragment verwendeten entfernt wurde. (I38c87, b/183877426)
  • FragmentContainerView sorgt jetzt dafür, dass für jedes Fragment ein neuer Satz von WindowInsets gesendet wird. So kann jedes Fragment die Insets unabhängig voneinander nutzen. (I63f68, b/172153900)
  • In DialogFragment werden jetzt Fälle richtig behandelt, 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 behoben, wenn IDs wiederverwendet werden, die intern von Dialogfeldern wie BottomSheetDialog verwendet werden. (Ie6279, b/180021387)
  • FragmentManager.dump() rückt das erste Fragment in der Liste der aktiven Fragmente jetzt richtig ein. (If5c33, b/183705451)

Neue Fehlerkorrekturen für State Manager

  • Der neue Fragment-Statusmanager verarbeitet jetzt Übergänge mit Ausblendvorgängen korrekt. (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 sind veröffentlicht. Version 1.3.2 enthält diese Commits.

Neue Fehlerkorrekturen für State Manager

  • Wenn Sie sowohl popBackStack()- als auch commit()-Vorgänge gleichzeitig ausführen, wird mit dem letzten Vorgang jetzt die Richtung für alle Animationen festgelegt. Es werden also nicht mehr einige Pop- und einige Enter-Animationen ausgeführt. (I7072e, b/181142246)
  • Bei Übergängen mit gemeinsam genutzten Elementen wird der Übergangsname von Ansichten in einer Hierarchie mit gemeinsam genutzten Elementen nicht mehr gelöscht. (I4d4a6, b/179934757)

Abhängigkeitsupdates

  • Das Fragment hängt jetzt von Activity 1.2.2 ab. Damit wird ein Problem mit dem InvalidFragmentVersionForActivityResult-Lint-Check von Activity bei Verwendung von Fragment 1.3.1 oder höher behoben.
  • Das Fragment hängt jetzt von Lifecycle 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 sind veröffentlicht. Version 1.3.1 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

  • Fragmente, die in eine bereits RESUMED-Aktivität mit FragmentContainerView eingefügt wurden, werden nach einer Konfigurationsänderung jetzt richtig angezeigt. (Ie14c8, b/180538371)
  • Am Ende des Fragments toString() (I54705, b/177761088) befindet sich kein zusätzliches } mehr.
  • Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß das JavaDoc der Basismethode (I736ce, b/139548782).
  • Die Dokumentation für setFragmentResult und setFragmentResultListener wurde aktualisiert. Die Parameterdokumentation spiegelt nun wider, dass keine Nullwerte mehr akzeptiert werden (I990ba, b/178348386).

Neue Fehlerkorrekturen für State Manager

  • Ein Speicherleck in Fragmenten, das durch mFocusedView verursacht wurde, wurde behoben (Ib4e9e, b/179925887).
  • In Fragmenten wird jetzt onCreateOptionsMenu richtig aufgerufen, wenn show/hide-Transaktionen verwendet werden (I8bce8, b/180255554).
  • Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen jetzt ordnungsgemäß RESUMED (Ic11e6, b/180825150).
  • Mit dem Tag <fragment> eingefügte Fragmente werden jetzt immer in RESUMED angezeigt. (I452ac, (I9fa49)

Abhängigkeitsupdates

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 sind veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Neuer State Manager: Durch eine umfassende Neufassung der internen Komponenten von FragmentManager wurden zahlreiche Probleme beim Senden von Lifecycle-Ereignissen, Animationen und Übergängen sowie bei der Verarbeitung verzögerter Fragmente behoben.
  • Activity Result API Integration: Unterstützung für die ActivityResultRegistry API, die in Activity 1.2.0 eingeführt wurde, um startActivityForResult()+onActivityResult()- und requestPermissions()+onRequestPermissionsResult()-Abläufe zu verarbeiten, ohne 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.

    • In diesem Release werden einige Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die dazu führen, dass die Activity Result API in früheren Versionen von FragmentActivity nicht funktioniert. Sie müssen auf Fragment 1.3.0 aktualisieren, um die Activity Result APIs in einem FragmentActivity oder AppCompatActivity zu verwenden.
  • Fragment Result API: Es wurde Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs in FragmentManager hinzugefügt. Das funktioniert für Hierarchiefragmente (über- und untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es sich mindestens im Zustand STARTED befindet. Die Target-Fragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Weitere Informationen finden Sie unter Ergebnisse mit der Fragment Result API abrufen.

  • FragmentOnAttachListener: Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Es wurde ein neues FragmentOnAttachListener hinzugefügt, um eine flexiblere Alternative zu bieten. Damit kann onAttachFragment() an separate, testbare Listener delegiert werden. Außerdem wird das Hinzufügen eines Listeners zu anderen FragmentManagers als dem direkten untergeordneten FragmentManager unterstützt.

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

    • FragmentScenario verwendet jetzt setMaxLifecycle(), um moveToState() zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen gewährleistet und der Status des Fragments wird von der zugrunde liegenden Aktivität entkoppelt.
    • In FragmentScenario kann jetzt ein anfängliches Lifecycle.State festgelegt werden, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu jedem Lifecycle.State gewechselt wird.
    • Es gibt jetzt eine Alternative zur FragmentScenario API von onFragment in Form der Kotlin-reified-Erweiterungsmethode withFragment, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst.
  • ViewTree-Unterstützung: Fragment unterstützt jetzt die APIs ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View) und ViewTreeSavedStateRegistryOwner, die in Lifecycle 2.3.0 und SavedState 1.1.0 hinzugefügt wurden. Daher wird das Fragment als ViewModelStoreOwner und ein SavedStateRegistryOwner und LifecycleOwner zurückgegeben, die an den View-Lebenszyklus des Fragments gebunden sind, wenn ein View in einem Fragment verwendet wird.

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

  • Einstellung von setRetainInstance(): Die Methode setRetainInstance() für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor von ViewModel und der onCleared()-Callback, den er empfängt).

  • Einstellung von ViewPager 1-Adaptern: 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 sind veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem ein übergeordnetes DialogFragment nach einer Konfigurationsänderung über einem untergeordneten DialogFragment angezeigt wurde. Untergeordnete Dialogfragmente werden jetzt immer über einem übergeordneten Dialogfragment angezeigt. (I30806, b/177439520)
  • Ein Problem wurde behoben, durch das bei einem hide-Vorgang mit einem Animation das auszublendende Fragment am Ende der Animation aufblitzte. (I57e22, b/175417675)
  • Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen jetzt RESUMED. (I1fc1d, b/177154873)

Neue Fehlerkorrekturen für State Manager

  • Die Ansicht des Fragments Lifecycle verarbeitet jetzt Fälle korrekt, in denen die Ansicht des Fragments zerstört wird, bevor Lifecycle CREATED erreicht. Dadurch werden Ausnahmen vom Typ „no event down from INITIALIZED“ vermieden. (eda2bd, b/176138645)
  • Fragmente, in denen Animator verwendet wird, 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 sind 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 für State Manager

  • Ein Speicherleck und ein visueller Artefakt wurden behoben, die beim Hinzufügen eines Fragments mit einem Animation zu einem FragmentContainerView und beim Unterbrechen des Hinzufügens mit einem Pop-Vorgang auftraten. (I952d8)
  • Ein Problem wurde behoben, durch das die Ansicht des Fragments in der Ansichtshierarchie verblieb, wenn sie während der onCreate()- oder onViewCreated()-Methoden ersetzt wurde. (I8a7d5)
  • Der Fokus wird jetzt korrekt auf die Stammansichten von Fragmenten zurückgesetzt, wenn sie fortgesetzt werden. (Ifc84b)
  • Wenn Sie Pop- und Replace-Vorgänge in derselben Fragmenttransaktion kombinieren, 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 sind veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

Neue Funktionen

  • FragmentScenario wurde vollständig in Kotlin konvertiert. Dabei wurde die Quell- und Binärkompatibilität durch die Verwendung der funktionalen Schnittstellen von Kotlin 1.4 für FragmentAction beibehalten. (I19d31)

Geändertes Verhalten

  • FragmentContainerViews, in denen kein Fragment mit dem Attribut class oder android:name eingefügt wird, können jetzt außerhalb eines FragmentActivity verwendet werden. (Id4397, b/172266337)
  • Wenn Sie versuchen, die maximale Lebensdauer eines Fragments auf DESTROYED festzulegen, wird jetzt eine IllegalArgumentException ausgelöst (Ie7651, b/170765622).
  • Beim Initialisieren eines FragmentScenario mit dem Status DESTROYED wird jetzt eine IllegalArgumentException ausgelöst (I73590, b/170765622).

Neue Fehlerkorrekturen für State Manager

  • Ein Problem wurde behoben, bei dem die Ansicht ihren endgültigen Zustand nicht erreichte, wenn Sie einen Fragmentübergang unterbrachen, bei dem Animator oder eine der TRANSIT_FRAGMENT_-Optionen verwendet wurde. (I92426, b/169874632)
  • Ein Problem wurde behoben, das dazu führte, dass Fragmente mit einem beendeten Animation nicht richtig zerstört wurden. (I83d65)
  • Beim Verlassen von Fragmenten, deren Effekte umgekehrt wurden, wird der Vorgang jetzt korrekt abgebrochen und mit dem richtigen Einblendungseffekt neu gestartet. (I62226, b/167092035)
  • Es wurde ein Problem behoben, bei dem der Ausgang Animator eines hide() nicht ausgeführt wurde. (Id7ffe)
  • Fragmente werden jetzt richtig angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
  • Bei Fragmenten, die den Fokus während einer Animation entfernen, wird nicht mehr versucht, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie RESUMED erreichen (I38c65, b/172925703).

Externe Beiträge

  • FragmentFactory speichert jetzt Fragmentklassen für verschiedene ClassLoader-Instanzen separat im Cache. Vielen Dank, 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 sind veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Neue Funktionen

  • In setMaxLifecycle() kann der Status Lifecycle jetzt auf INITIALIZING gesetzt werden, solange das Fragment nicht in CREATED verschoben wurde. (b/159662173)

API-Änderungen

Geändertes Verhalten

  • Fragmentressourcendateien wurden korrekt privat gemacht. (aosp/1425237)

Fehlerkorrekturen

  • Mit dem Tag <fragment> eingefügte Fragmente warten jetzt ordnungsgemäß, bis ihre Ansichten einem Container hinzugefügt werden, bevor sie in den Status STARTED wechseln (I02f4c).
  • Bei Fragmenten, die sichtbar sind und dann setMaxLifecycle() bis CREATED, werden die Exit-Effekte jetzt richtig ausgeführt. (b/165822335)
  • Das Entfernen eines getrennten Fragments, das nicht dem Backstack hinzugefügt wurde, führt nicht mehr zu einem Speicherleck. Mit freundlicher Genehmigung von Nicklas Ansman Giertz. (b/166489383)
  • Aktive Fragmente haben jetzt immer einen nicht leeren FragmentManager und Fragmente mit einem nicht leeren FragmentManager werden immer als aktiv betrachtet. (aosp/1422346)
  • Für die Standardeffekte von Fragmenten, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE, wird jetzt Animator anstelle von Animation verwendet. (b/166155034)

Neue Fehlerkorrekturen für State Manager

  • Der Fokusstatus von Ansichten in Fragmenten wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
  • Fragmente, die nur einen Übergang für ein gemeinsames Element haben, schließen jetzt ihre Spezialeffekte ordnungsgemäß ab und erreichen ihren endgültigen Status (Iaebc7, b/166658128).
  • Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie zerstört werden. (Id5876)
  • Der neue Statusmanager entfernt jetzt immer die Ansicht des beendeten Fragments, bevor er die Ansicht des neuen Fragments hinzufügt. (I41a6e)
  • Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie die Ansicht eines Eingabefragments vor Beginn der Animation auf INVISIBLE setzen, bleibt es also tatsächlich unsichtbar. (b/164481490)
  • Bei Fragmenten hat Animators jetzt Vorrang vor Animations. Das bedeutet, dass bei einem Fragment mit beiden nur Animator ausgeführt und Animation ignoriert wird. (b/167579557)
  • Der neue Statusmanager führt nicht mehr dazu, dass Fragmente bei der Verwendung von Übergangsanimationen flackern. (b/163084315)

Bekanntes Problem

Wenn Sie bei Verwendung des neuen Statusmanagers während eines Eingabeeffekts auf „Zurück“ drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt. Das Ergebnis ist ein leerer Bildschirm. (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 sind veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.

Neuer State Manager

Diese Version enthält ein umfassendes Refactoring der internen Statusverwaltung von FragmentManager, das sich auf das Senden von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung von verzögerten Transaktionen auswirkt. Diese Einstellung ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost „Fragments: Rebuilding the Internals“. (b/139536619, 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 behoben, wenn Sie den neuen Statusmanager verwenden:

  • Das vorherige Fragment eines replace-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580)
  • Durch die Verwendung von Fragmenten werden mehrere konkurrierende Animationen für dieselben Fragmente verhindert. So wird vermieden, dass ein Animation alle Transition-Effekte überschreibt oder dass ein Animator und ein Transition für ein einzelnes Fragment gleichzeitig ausgeführt werden. (b/149569323)
  • Die enterTransition und exitTranstion aller ein- und ausgehenden Fragmente werden jetzt ausgeführt und nicht nur das letzte eingehende und das erste ausgehende Fragment. (b/149344150)
  • Verschobene Fragmente bleiben nicht mehr im Status CREATED hängen, sondern wechseln mit anderen Fragmenten in den Status STARTED. (b/129035555)
  • Ein Problem wurde behoben, bei dem FragmentManager Vorgänge in falscher Reihenfolge ausgeführt hat, wenn eine verschobene, neu geordnete Transaktion und eine nicht neu geordnete Transaktion kombiniert wurden. (b/147297731)
  • Wenn mehrere Fragmente gleichzeitig eingeblendet werden, sind Zwischenfragmente beim Verschieben von Fragmenten nicht mehr vorübergehend sichtbar. (b/37140383)
  • FragmentManager gibt jetzt die richtigen Fragmente zurück, wenn findFragmentById() oder findFragmentByTag() aus dem onAttachFragment()-Callback aufgerufen wird. (b/153082833)
  • In Fragmenten wird onCreateView() nicht mehr aufgerufen, wenn Fragmente zerstört werden, während das Fragment, das sie ersetzt, verzögert wird. (b/143915710)
  • In der Fehlermeldung, die beim Versuch angezeigt wird, Framework-Instanzen Transition und AndroidX-Instanzen Transition zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang erwähnt. (b/155574969)

Geändertes Verhalten

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

Fehlerkorrekturen

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

Bekanntes Problem

  • Wenn Sie den neuen Statusmanager verwenden, wird die Sichtbarkeit, die Sie direkt nach onViewCreated() und vor onResume() für die Stammansicht des Fragments festlegen, von FragmentManager überschrieben, da FragmentManager die Sichtbarkeit der Stammansicht steuert. Als Workaround sollten Sie immer die Vorgänge 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 sind 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 versetzen. (b/159662750)
  • Es wurde eine Alternative zur FragmentScenario-API von onFragment in Form der reifizierten Kotlin-Erweiterungsmethode withFragment hinzugefügt, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst. (b/158697631)

Geändertes Verhalten

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

Fehlerkorrekturen

  • Fragmente warten jetzt darauf, dass die Ansicht des Fragments angehängt wird, bevor ViewCompat.requestApplyInsets() aufgerufen wird. So werden Fälle vermieden, in denen die Inset-Anfrage verworfen wurde. (b/158095749)
  • Beim Aufrufen von clearFragmentResultListener wird der Lifecycle-Observer jetzt richtig 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 sind veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Es wurde ein neues FragmentOnAttachListener hinzugefügt, um eine flexiblere Alternative zu bieten. Damit kann onAttachFragment() an separate, testbare Listener delegiert werden. Außerdem wird das Hinzufügen eines Listeners zu anderen FragmentManagers als dem direkten untergeordneten FragmentManager unterstützt. (I06d3d)

Fehlerkorrekturen

  • Der Ansichtsstatus von übergeordneten Fragmenten wird jetzt vor dem ihrer untergeordneten Fragmente wiederhergestellt. Dadurch wird ein Problem mit der visuellen Reihenfolge nach einer Konfigurationsänderung behoben, wenn in einem DialogFragment ein anderes DialogFragment als untergeordnetes Fragment angezeigt wird. (b/157195715)
  • Ein Problem wurde behoben, bei dem der UseRequireInsteadOfGet-Lint-Check verkettete Verwendungen der Operatoren ?. und !! nicht richtig verarbeitet hat. (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 sind veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die APIs setFragmentResult() und setFragmentResultListener() akzeptieren jetzt jeweils einen Bundle- und einen FragmentResultListener-Wert, der nicht null ist. Verwenden Sie die neuen Methoden clearFragmentResult() und clearFragmentResultListener(), um ein zuvor festgelegtes Ergebnis oder einen Listener explizit zu löschen. (b/155416778)
  • Die setFragmentResultListener()-Kotlin-Erweiterungen, die ein Lambda verwenden, sind jetzt als inline markiert. (b/155323404)

Geändertes Verhalten

  • Die zuvor eingestellten startActivityForResult(), startIntentSenderForResult() und requestPermissions auf Fragment verwenden jetzt intern ActivityResultRegistry. Dadurch entfällt die Einschränkung, dass bei der Verwendung dieser APIs nur die unteren Bits (unter 0xFFFF) für Ihre Anfragecodes verwendet werden dürfen. (b/155518741)

Aktualisierungen der Dokumentation

  • Die Dokumentation zu den Konstruktoren Fragment(@LayoutRes int) und DialogFragment(@LayoutRes int) wurde erweitert, um zu verdeutlichen, dass sie beim Verwenden des Standard-FragmentFactory aus dem Konstruktor ohne Argumente der Unterklassen aufgerufen werden sollten. (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 sind veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Es wurde Unterstützung für das Übergeben von Ergebnissen zwischen zwei Fragmenten über neue APIs in FragmentManager hinzugefügt. Das funktioniert für Hierarchiefragmente (über- und untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es sich mindestens im Zustand STARTED befindet. (b/149787344)

API-Änderungen

  • Die Ziel-Fragment-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() für Fragment wurden eingestellt. Verwenden Sie die Activity Result APIs. (aosp/1290887)
  • Funktionsgefährdende Änderung in Aktivität 1.2.0-alpha04: Die Methode prepareCall() wurde in registerForActivityResult() umbenannt. (aosp/1278717)

Fehlerkorrekturen

  • Die getViewLifecycleOwner() des Fragments wird jetzt vor dem Aufruf von onSaveInstanceState() beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. (b/154645875)
  • Wenn setMenuVisibility(false) für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. (b/153593580)
  • Ein illegalStateException wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie eines DialogFragment mit FragmentContainerView aufgetreten ist. (b/154366601)
  • Die Methode getDefaultViewModelProviderFactory() für Fragmente stürzt nicht mehr ab, wenn Sie Ihre Fragmente außerhalb einer Aktivität hosten. (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 sind 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

  • Ein in Fragment 1.3.0-alpha02 eingeführter Regressionsfehler bei der Verwendung von BottomSheetDialogFragment wurde behoben. (b/151652127, aosp/1263328, aosp/1265163)
  • Ein Absturz bei der Verwendung von prepareCall aus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004)
  • Ein Problem wurde behoben, bei dem Übergänge für gemeinsame Elemente und Exit-Übergänge bei Verwendung von setTargetFragment() ignoriert wurden. (b/152023196)
  • Fragment 1.2.4: Die ProGuard-Regeln für Fragmente 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 der View-Lebenszyklus immer synchron sind. Daher kann beim Aufrufen von observe entweder this oder viewLifecycleOwner verwendet werden. (b/151765086)

Änderungen an Abhängigkeiten

  • Fragmente sind von Activity 1.2.0-alpha03 abhängig, in der die Activity Result API, die in Activity 1.2.0-alpha02 eingeführt wurde, erheblich verbessert wurde.

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 sind veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Unterstützung für die ActivityResultRegistry API hinzugefügt, die in Activity 1.2.0-alpha02 eingeführt wurde, um die Abläufe startActivityForResult()+onActivityResult() und requestPermissions()+onRequestPermissionsResult() zu verarbeiten, ohne 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, der ein @LayoutRes verwendet, das das Layout angibt, das onCreateView() standardmäßig aufblähen soll. (b/150327080)
  • Die Methode onActivityCreated() ist jetzt veraltet. Code, der die Ansicht des Fragments betrifft, sollte in onViewCreated() (die unmittelbar vor onActivityCreated() aufgerufen wird) und anderer Initialisierungscode in onCreate() stehen. Wenn Sie einen Rückruf erhalten möchten, sobald die onCreate() der Aktivität abgeschlossen ist, sollte ein LifeCycleObserver für die Lifecycle der Aktivität in onAttach() registriert und entfernt werden, sobald der onCreate()-Rückruf empfangen wurde. (b/144309266)

Fehlerkorrekturen

  • Fragment 1.2.3: Ein Fehler in DialogFragment wurde behoben, der beim Aufrufen von getLayoutInflater() aus onCreateDialog() heraus einen StackOverflowError verursachte. (b/117894767, aosp/1258664)
  • Fragment 1.2.3: Der Umfang der enthaltenen ProGuard-Regeln für Fragment wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169)
  • Fragment 1.2.3: Falsch positive Ergebnisse im UseRequireInsteadOfGet-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Namen der Kotlin-Property überschattete. (b/149891163)
  • Fragment 1.2.3: FragmentContainerView löst bei Verwendung des falschen Konstruktors in der Layoutvorschau keinen UnsupportedOperationException mehr aus. (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 sind veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Unterstützung für die in Lifecycle 2.3.0-alpha01 hinzugefügte ViewTreeLifecycleOwner.get(View) API wurde hinzugefügt, sodass die viewLifecycleOwner des Fragments als LifecycleOwner für alle von onCreateView() zurückgegebenen Ansichten zurückgegeben wird. (aosp/1182955)

API-Änderungen

  • Die Methode setRetainInstance() für Fragmente ist veraltet. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor von ViewModel und der onCleared()-Callback, den er empfängt). (b/143911815)
  • Mit der Veröffentlichung von ViewPager2 1.0.0 wurden die Klassen FragmentPagerAdapter und FragmentStatePagerAdapter für die Interaktion mit ViewPager verworfen. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren. (b/145132715)

Fehlerkorrekturen

  • Fragment-ProGuard-Regeln behalten jetzt korrekt nur die Standardkonstruktoren von Fragment-Klassen bei, die verwendet werden, anstatt 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 liefern nicht mehr fälschlicherweise positive Ergebnisse für lokale Variablen, die denselben Namen wie die überschatteten Kotlin-Property-Namen haben (z.B. view). (b/149891163)
  • Bei Verwendung der Layoutvorschau in Android Studio wird für FragmentContainerView kein UnsupportedOperationException mehr ausgegeben. (b/149707833)
  • Ein Problem wurde behoben, durch das beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht nach jeder Konfigurationsänderung neu erstellt und dann wieder zerstört 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 sind veröffentlicht. Version 1.2.5 enthält diese Commits.

Fehlerkorrekturen

  • Die getViewLifecycleOwner() des Fragments wird jetzt vor dem Aufruf von onSaveInstanceState() beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. Diese Funktion wurde zuvor im Fragment 1.3.0-alpha04 veröffentlicht. (b/154645875)
  • Wenn setMenuVisibility(false) für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. Diese Funktion wurde zuvor im 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 sind veröffentlicht. Version 1.2.4 enthält diese Commits.

Fehlerkorrekturen

  • Die ProGuard-Regeln für Fragmente 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 der 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 sind veröffentlicht. Version 1.2.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in DialogFragment wurde behoben, der beim Aufrufen von getLayoutInflater() aus onCreateDialog() heraus einen StackOverflowError verursacht hat. (b/117894767, aosp/1258665)
  • Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169)
  • Falsch positive Ergebnisse im UseRequireInsteadOfGet-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Kotlin-Attributnamen überschattete. (b/149891163)
  • FragmentContainerView löst nicht mehr den Fehler UnsupportedOperationException aus, wenn der falsche Konstruktor in der Layoutvorschau 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 sind veröffentlicht. Version 1.2.2 enthält diese Commits.

Neue Lint-Prüfungen

  • Lint schlägt vor, viewLifecycleOwner als LifecycleOwner für Aufrufe von OnBackPressedDispatcher in onCreateView(), onViewCreated() und onActivityCreated() zu verwenden. (b/142117657)
  • Es wurde ein neuer Lint-Check hinzugefügt, der bestätigt, dass Sie die richtige debugImplementation verwenden, wenn Sie das fragment-testing-Artefakt verwenden. (b/141500106)
  • Für alle Fragment-APIs, die sowohl eine get- als auch eine require-Entsprechung enthalten, wird jetzt empfohlen, die zugehörigen require___()-Methoden für aussagekräftigere Fehlermeldungen anstelle von checkNotNull(get___()), requireNonNull(get___()) oder get___()!! zu verwenden. (aosp/1202883)

Fehlerkorrekturen

  • Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981).
  • Der vorhandene Lint-Check, der die Verwendung von viewLifecycleOwner bei der Verwendung von observe vorschlägt, wurde verbessert, um auch die livedata-ktx-Erweiterungsmethodenversion von observe zu berücksichtigen. (b/148996309)
  • Die Formatierung für viele Lint-Prüfungen wurde korrigiert (aosp/1157012).

Externe Beiträge

  • Vielen Dank an Zac Sweers für die require___()-Lint-Prüfungen im Namen von Slack. (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 sind veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Fragmente, die über die Methoden add und replace hinzugefügt werden und eine Class-Instanz (oder die Kotlin-reifizierten Versionen) verwenden, behalten jetzt ihren Standardkonstruktor bei ProGuard. (b/148181315)
  • FragmentStatePagerAdapter und FragmentPagerAdapter fangen keine Ausnahmen mehr ab, die von FragmentManager ausgelöst werden, wenn finishUpdate() ausgeführt wird. (aosp/1208711)
  • Ein Problem wurde behoben, durch das FragmentManager.findFragment() nicht mit Fragmenten funktionierte, die über das <fragment>-Tag hinzugefügt wurden. (b/147784323)
  • Für Fragmente, die mit dem Tag <fragment> eingefügt werden, wird jetzt immer onInflate() vor onCreate() aufgerufen, wenn sie sich im Layout befinden. (aosp/1215856)
  • Das Aufrufen von toString() für eine FragmentManager-Instanz löst nicht mehr die Ausnahme NullPointerException aus, wenn die Aktivität bereits zerstört wurde. (b/148189412)

Änderungen an Abhängigkeiten

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 sind veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • FragmentContainerView: Die FragmentContainerView ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Sie ersetzt die Verwendung von FrameLayout oder anderen Layouts. Es unterstützt auch dieselben class, android:name und optionalen android:tag wie das <fragment>-Tag, verwendet aber ein normales FragmentTransaction, um dieses erste Fragment hinzuzufügen, anstatt des benutzerdefinierten Codepfads, der von <fragment> verwendet wird.
  • onDestroyView()-Timing: Fragmente warten jetzt auf den Abschluss von Exit-Animationen, Exit-Framework-Übergängen und Exit-AndroidX-Übergängen (bei Verwendung von Transition 1.3.0), bevor onDestroyView() aufgerufen wird.
  • Klassenbasiert add() und replace(): Es wurden neue Überladungen von add() und replace() für FragmentTransaction hinzugefügt, die ein Class<? extends Fragment> und optional ein Bundle von Argumenten akzeptieren. Bei diesen Methoden wird Ihr FragmentFactory verwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen. fragment-ktx wurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (d. h. fragmentTransaction.replace<YourFragment>(R.id.container)).
  • Lifecycle ViewModel SavedState Integration: SavedStateViewModelFactory ist jetzt die Standardfactory, die verwendet wird, wenn by viewModels(), by activityViewModels(), der ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwendet wird.
  • Neue Lint-Prüfungen: Es wurde eine neue Lint-Prüfung hinzugefügt, die dafür sorgt, dass Sie getViewLifecycleOwner() verwenden, wenn Sie LiveData aus onCreateView(), onViewCreated() oder onActivityCreated() beobachten.
  • getFragmentManager()-Einstellung: Die Methoden getFragmentManager() und requireFragmentManager() für „Fragment“ wurden eingestellt und durch eine einzelne getParentFragmentManager()-Methode ersetzt, die das nicht leere FragmentManager zurückgibt, dem das Fragment hinzugefügt wird. Mit isAdded() können Sie feststellen, ob es sicher ist, die Methode aufzurufen.
  • FragmentManager.enableDebugLogging()-Einstellung: Die statische Methode FragmentManager.enableDebugLogging wurde eingestellt. FragmentManager berücksichtigt jetzt Log.isLoggable() für das Tag FragmentManager. So können Sie entweder DEBUG- oder VERBOSE-Logging aktivieren, ohne Ihre App neu kompilieren zu müssen.

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name in einem FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. (b/142601969)
  • Wenn Sie ein NavHostFragment mit class oder android:name in XML mit FragmentContainerView hinzufügen, können Sie findNavController() nicht in onCreate() Ihrer Aktivität 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 sind veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.

Fehlerkorrekturen

  • Ein Regressionsfehler im Fragment 1.2.0-rc04 bei Verwendung des Tags <fragment> wurde behoben. Dadurch wurde onViewCreated() während der Zerstörung der Aktivität fälschlicherweise aufgerufen. (b/146290333)
  • Fragmente, die mit dem Tag <fragment> hinzugefügt werden, werden jetzt richtig gelöscht, auch wenn sie nur manchmal im Layout vorhanden sind (z.B. nur im Querformat). Daher werden diese Fragmente jetzt korrekt in CREATED verschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden also nicht instanziiert, ohne dass Lebenszyklusmethoden durchlaufen werden. (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 sind 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 sind veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Ein unbeabsichtigtes Verhalten wurde korrigiert, bei dem entfernte Fragmente weiterhin von findFragmentById() / findFragmentByTag() zurückgegeben wurden, während ihre Übergangs- oder Beendigungsanimationen liefen. (b/143982969, aosp/1167585)
  • Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Fragmenten beendet, wenn die enthaltende Aktivität onSaveInstanceState() aufruft. (b/144380645)
  • Ein Problem wurde behoben, bei dem Ansichten fälschlicherweise mit INVISIBLE gekennzeichnet wurden, nachdem ein ausgeblendetes Fragment eingeblendet wurde. (b/70793925)
  • Übergänge für freigegebene Elemente in Fragmenten unterstützen jetzt Ansichten, die gedreht, skaliert usw. wurden (b/142835261).

Aktualisierungen der Dokumentation

  • Die Dokumentation zur Einstellung von setUserVisibleHint() wurde klarer formuliert. (b/143897055)
  • Die Dokumentation zu setFragmentFactory() und getFragmentFactory() wurde verbessert, um besser darauf hinzuweisen, dass das Festlegen eines FragmentFactory auch Auswirkungen auf untergeordnete FragmentManager hat. (aosp/1170095)

Änderungen an Abhängigkeiten

  • Fragments hängt jetzt von Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 und Activity 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 sind veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • In Kotlin wird für den LintFix für die Verwendung von getViewLifecycleOwner() beim Beobachten von LiveData aus onCreateView(), onViewCreated() oder onActivityCreated() (eingeführt in Fragment 1.2.0-rc01) jetzt die Kotlin-Syntax für den Eigenschaftenzugriff viewLifecycleOwner anstelle von getViewLifecycleOwner() verwendet. (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 sind veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt jetzt zusätzlich zu android:name auch das Attribut class. Damit wird die Funktionalität des <fragment>-Tags gespiegelt. (b/142722242)
  • Es wurde ein neuer Lint-Check hinzugefügt, der dafür sorgt, 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 DialogInterface, das an sie übergeben wird, nicht null ist und dass getDialog() bei der Ausführung nicht null zurückgibt. (b/141974033)
  • Mit FragmentContainerView wird das durch class oder android:name definierte Fragment jetzt als Teil der Inflation hinzugefügt. So wird dafür gesorgt, dass findFragmentById() und findFragmentByTag() direkt danach funktionieren. (b/142520327)
  • Ein IllegalStateException in FragmentContainerView wurde behoben, da der Status gespeichert wurde. (b/142580713)
  • Ein UnsupportedOperationException in FragmentContainerView wurde behoben, wenn die Klasse FragmentContainerView 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 beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. Wir haben die Lint-Regel deaktiviert, die vorschlägt, zu FragmentContainerView zu wechseln, bis das Problem über aapt2 behoben ist. (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 sind veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem das onInflate() eines Fragments keine korrekten Attribute von FragmentContainerView erhalten hat, was zu Fehlern bei Fällen wie NavHostFragment führte. (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 sind veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView bietet Unterstützung für das Hinzufügen eines ersten Fragments mit zusätzlicher Unterstützung für die XML-Attribute android:name und optional android:tag. Im Gegensatz zum <fragment>-Tag wird bei FragmentContainerView ein normales FragmentTransaction verwendet, um das erste Fragment hinzuzufügen. Dadurch sind weitere FragmentTransaction-Vorgänge für das FragmentContainerView möglich und View Binding kann für das Layout verwendet werden. (b/139830628, b/141177981)
  • Fragments enthält jetzt eine Lint-Warnung, die eine schnelle Korrektur zum Ersetzen von <fragment> durch FragmentContainerView bietet. (b/139830056)

Fehlerkorrekturen

  • Ein ClassCastException bei der Verwendung von androidx.transition wurde behoben. (b/140680619)
  • Bei Verwendung von Transition 1.3.0-beta01 warten Fragmente jetzt auf den Abschluss von androidx.transition-Übergängen (zusätzlich zu Framework-Übergängen und -Animationen, die in Fragment 1.2.0-alpha03 bzw. Fragment 1.2.0-alpha02 behoben wurden), bevor onDestroyView() gesendet wird. (aosp/1119841)
  • Bei Verwendung von Transition 1.3.0-beta01 werden androidx.transition-Übergänge in Fragmenten jetzt richtig abgebrochen, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841)
  • Es wurde ein Problem auf API 17 und niedriger behoben, das beim Verwenden von androidx.transition-Übergängen für die Stammansicht des Fragments bei Verwendung von FragmentContainerView auftrat. (b/140361893)
  • Das fragment-testing-Artefakt hängt jetzt von AndroidX Test 1.2.0 ab. Dadurch wird eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben. (b/139100149)
  • Die Verwendung von Log.w in FragmentManager wurde entfernt. (aosp/1126468)

Bekannte Probleme

  • Die onInflate() des Fragments erhalten keine korrekten Attribute von FragmentContainerView, was zu Problemen wie NavHostFragment führt. (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 sind 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 einzelne getParentFragmentManager()-Methode ersetzt, die das FragmentManager zurückgibt, dem das Fragment hinzugefügt wird (mit isAdded() können Sie feststellen, ob der Aufruf sicher ist). (b/140574496)
  • Die statische Methode FragmentManager.enableDebugLogging wurde verworfen. FragmentManager berücksichtigt jetzt Log.isLoggable() für das Tag FragmentManager. So können Sie entweder die Protokollierung von DEBUG oder VERBOSE aktivieren, ohne Ihre App neu kompilieren zu müssen. (aosp/1116591)

Fehlerkorrekturen

  • Fragmente werden jetzt ordnungsgemäß zerstört, während die Übergangsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
  • Es wurde ein Problem behoben, bei dem in Fragmenten Activity.findViewById() aufgerufen wurde, obwohl das zuvor nicht der Fall war. (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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • FragmentContainerView heißt jetzt final. (b/140133091)

Fehlerkorrekturen

  • FragmentContainerView kehrt die Zeichenreihenfolge jetzt korrekt um, wenn Fragmente aus dem Backstack entfernt werden. (b/139104187)
  • Ein Problem wurde behoben, durch das die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment entfernt und ein neues Fragment hinzugefügt wurde. (b/111659726)
  • Fragmente warten jetzt auf den Abschluss von Übergängen (zusätzlich zu Animationen, was in Fragment 1.2.0-alpha02 behoben wurde), bevor onDestroyView() gesendet wird. (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 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • SavedStateViewModelFactory ist jetzt die Standardfactory, die verwendet wird, wenn Sie by viewModels(), by activityViewModels(), den ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwenden. (b/135716331)
  • Die Standardanimationen bei Verwendung von TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, 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

  • FragmentContainerView wird als dringend empfohlener Container für dynamisch hinzugefügte Fragmente eingeführt und ersetzt die Verwendung von FrameLayout usw., da damit Probleme mit der Z-Reihenfolge von Animationen und dem Senden von Fenstereinblendungen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)
  • Es wurde eine statische FragmentManager.findFragment(View)-Methode hinzugefügt, mit der das enthaltende Fragment aus einer Ansicht abgerufen werden kann, die von einem Fragment eingefügt wurde. Eine Kotlin-Erweiterung ist auch in fragment-ktx verfügbar. (aosp/1090757)
  • Es wurden neue Überladungen von add() und replace() für FragmentTransaction hinzugefügt, die ein Class<? extends Fragment> und optional ein Bundle von Argumenten akzeptieren. Bei diesen Methoden wird Ihr FragmentFactory verwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen. fragment-ktx wurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987)
  • @MainThread-Annotationen wurden den Fragment-Lifecycle-Callbacks hinzugefügt. (b/127272564)
  • Die APIs für den Brotkrümeltitel auf FragmentTransaction und FragmentManager.BackStackEntry wurden eingestellt. (b/138252944)
  • Die Methode setTransitionStyle für FragmentTransaction wurde verworfen. (aosp/1011537)
  • Viele der Methoden in FragmentManager sind nicht mehr abstract. FragmentManager selbst bleibt abstract und sollte nicht direkt instanziiert oder erweitert werden. Sie sollten weiterhin nur eine vorhandene Instanz von getSupportFragmentManager(), getChildFragmentManager() usw. abrufen.

Fehlerkorrekturen

  • Aus Fragment 1.1.0-rc04: Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt wurden. (b/138251858)
  • Fragment 1.1.0-rc03: Ein Problem wurde behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wenn postponeEnterTransition() mit einem Timeout mehr als einmal aufgerufen wurde. (b/137797118)
  • Fragment 1.1.0-rc02:FragmentPagerAdapter und FragmentStatePagerAdapter: Ein Absturz beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
  • Fragmente warten jetzt, bis Animationen abgeschlossen sind, bevor sie onDestroyView() senden. (b/136110528)
  • Fragmentanimationen von untergeordneten Fragmenten und ihren untergeordneten Elementen werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
  • Ein NullPointerException wurde behoben, der beim Verwenden von Übergängen für gemeinsame Elemente und beim Kombinieren von Pop- und Add-Vorgängen aufgetreten ist. (b/120507394)
  • Es wurde eine Behelfslösung für IllegalStateExceptions 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 sind 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 dem Aufrufen von onViewCreated(). So wird dafür gesorgt, dass Ihre Ansicht immer die richtigen Insets hat. (b/135945162)

Fehlerkorrekturen

  • Es wurde ein NullPointerException behoben, der beim Einblenden eines FragmentTransaction auftrat, für das setPrimaryNavigationFragment() vor replace() verwendet wurde. (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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 1.0.0

  • fragment-testing: Das fragment-testing-Artefakt stellt eine FragmentScenario-Klasse zum Testen eines Fragments in Isolation bereit. Weitere Informationen finden Sie in der Dokumentation zum Testen der Fragmente Ihrer App.
  • 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, einen Konstruktor ohne Argumente zu haben.
  • Kotlin-Eigenschaftsdelegaten für ViewModels: Das fragment-ktx-Artefakt enthält jetzt zwei Kotlin-Eigenschaftsdelegaten: by viewModels() für den Zugriff auf ViewModels, die dem einzelnen Fragment zugeordnet 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. Diese ersetzt die jetzt eingestellte setUserVisibleHint(). FragmentPagerAdapter und FragmentStatePagerAdapter haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können.
  • FragmentActivity-LayoutId-Konstruktor: Unterklassen von FragmentActivity können jetzt optional einen Konstruktor für FragmentActivity aufrufen, der eine R.layout-ID akzeptiert. Diese gibt das Layout an, das als Inhaltssicht festgelegt werden soll. Dies ist eine Alternative zum Aufrufen von setContentView() in onCreate(). Die Anforderung, dass Ihre Unterklasse einen Konstruktor ohne Argumente haben muss, bleibt davon unberührt.
  • Fragment-LayoutId-Konstruktor: Unterklassen von Fragment können jetzt optional einen Konstruktor für Fragment aufrufen, der eine R.layout-ID akzeptiert. Diese gibt das Layout an, das für dieses Fragment verwendet werden soll. Das Überschreiben von onCreateView() ist dann nicht mehr erforderlich. Das aufgeblähte Layout kann in onViewCreated() konfiguriert werden.
  • Mit Zeitüberschreitung verschieben: Es wurde eine neue Überlastung von postponeEnterTransition() hinzugefügt, die eine Zeitüberschreitung in Anspruch nimmt.

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 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt werden. (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 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das beim mehrmaligen Aufrufen von postponeEnterTransition() mit einem Zeitlimit vorherige Zeitlimits nicht abgebrochen wurden. (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 sind 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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn während der Übergabe show()- oder hide()-Vorgänge verwendet werden. (b/133385058)
  • Es wurde ein NullPointerException behoben, der beim Einblenden eines FragmentTransaction auftrat, für das setPrimaryNavigationFragment() vor replace() verwendet wurde. (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 sind 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 richtig verschachtelt. (b/133497591)
  • OnBackPressedCallback-Instanzen, die im onCreate() eines Fragments registriert sind, haben jetzt ordnungsgemäß Vorrang vor dem untergeordneten FragmentManager. (b/133175997)
  • Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
  • Fragment-Animationen und ‑Übergänge werden jetzt ignoriert, wenn animateLayoutChanges="true" verwendet wird. Dadurch wird ein Problem behoben, bei dem Fragmente nicht richtig zerstört 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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Fragmente erhalten jetzt einen Callback für eine neue onPrimaryNavigationFragmentChanged(boolean)-Methode, wenn sich das primäre Navigationsfragment ändert. aosp/960857

Fehlerkorrekturen

  • Menüelemente, die von einem untergeordneten Fragment eingefügt wurden, 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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diese Version ist nicht mit Preferences 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Wenn Sie diese Version von „Fragments“ verwenden, führen Sie bitte ein Upgrade auf „Preferences“ 1.1.0-alpha05 durch.

Neue Funktionen

  • Es wurde eine neue Überladung von postponeEnterTransition() hinzugefügt, die ein Zeitlimit akzeptiert. Nach Ablauf des Zeitlimits ruft das Fragment automatisch startPostponedEnterTransition() auf. b/120803208

API-Änderungen

  • Breaking Change: Die zuvor verworfene Methode FragmentFactory instantiate, die ein Bundle akzeptierte, wurde entfernt. aosp/953856
  • Funktionsgefährdende Ä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 über setMaxLifecycle() begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Status erreichen. b/131557151
  • Bei Verwendung von setMaxLifecycle(Lifecycle.State.CREATED) wird die Ansicht von Fragmenten ordnungsgemäß zerstört. 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 sind 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. Diese ersetzt die jetzt eingestellte setUserVisibleHint(). FragmentPagerAdapter und FragmentStatePagerAdapter haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)

API-Änderungen

  • moveToState(STARTED) auf FragmentScenario kann jetzt nur noch auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)

Geändertes Verhalten

  • Aufgrund von b/129907905 erhalten Fragmente im Backstack keinen Callback für onCreateView(), wenn die Hosting-Aktivität neu erstellt wird. onCreateView() wird jetzt nur noch aufgerufen, wenn das Fragment sichtbar wird (d.h. wenn der Backstack entfernt wird).

Fehlerkorrekturen

  • Es wurde ein Problem behoben, das beim Verwenden eines <fragment>-Tags in XML und des contentLayoutId-Konstruktors von FragmentActivity oder AppCompatActivity auftrat. (b/129907905)
  • Ein Problem wurde behoben, bei dem Fragmente im Backstack nach einer Konfigurationsänderung nicht mindestens in den Status CREATED verschoben wurden. Dadurch wurden ViewModels und untergeordnete beibehaltene Fragmente nicht richtig verworfen. (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 mit einem Fragment-Lebenszyklus hinzugefügtes OnBackPressedCallback nicht aufgerufen wurde, wenn das FragmentManager einen Backstack hatte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209)
  • Für Animationen wird in Fragmenten nicht mehr LAYER_TYPE_HARDWARE erzwungen. Wenn Sie eine Animation für die Hardwareebene benötigen, müssen Sie sie in Ihre Animation einfügen. (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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Ausnahmen, die von FragmentManager ausgelöst werden, enthalten jetzt den Namen des Fragments in der Meldung. (b/67759402)

API-Änderungen

  • Fragment und FragmentActivity enthalten jetzt einen zweiten Konstruktor, der ein @LayoutRes int akzeptiert. Damit wird das bisherige Verhalten ersetzt, bei dem Ihre Klasse mit @ContentView annotiert wurde. Dieses Vorgehen funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)
  • Die onActivityResult() von FragmentActivity ist jetzt korrekt als @CallSuper markiert. (b/127971684)
  • Die instantiate-Methode von FragmentFactory, die ein Bundle-Argument akzeptiert, wurde eingestellt. Apps sollten die neue instantiate-Überladung verwenden, die kein Bundle akzeptiert. (b/128836103)
  • FragmentScenario-Methoden sind jetzt korrekt mit @StyleRes annotiert. (aosp/924193)
  • FragmentTabHost wurde eingestellt. (b/127971835)
  • Die getThemedContext() von FragmentActivity wurde entfernt. (aosp/934078)

Fehlerkorrekturen

  • Ein Regressionsproblem in Version 1.1.0-alpha05 wurde behoben, das dazu führte, dass das eingehende Fragment auf dem Bildschirm blinkte. (b/129405432)
  • Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von popBackStack- und replace-Vorgängen verloren ging. (b/124332597)
  • Es wurde ein Problem behoben, das beim Wiederherstellen des Fragmentstatus bei der Verwendung von @ContentView-Konstruktoren in der Aktivität aufgetreten ist. (b/127313094)
  • Die Logik von setTargetFragment() wurde korrigiert, wenn ein vorhandenes Zielfragment durch ein Fragment ersetzt wird, das noch nicht an den 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 sind veröffentlicht. Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

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

Geändertes Verhalten

  • Wenn Sie remove(), hide(), show(), detach() und setPrimaryNavigationFragment() mit einem Fragment aufrufen, das an einen anderen FragmentManager angehängt ist, wird jetzt eine IllegalStateException ausgelöst, anstatt dass der Vorgang ohne Fehlermeldung fehlschlägt (aosp/904301).

Fehlerkorrekturen

  • onNewIntent für FragmentActivity ist jetzt korrekt mit @CallSuper gekennzeichnet (b/124120586)
  • Ein Problem wurde behoben, bei dem die onDismiss() von DialogFragment bei Verwendung von getDialog().dismiss() oder getDialog().cancel() zweimal aufgerufen werden konnte (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 sind veröffentlicht.

Neue Funktionen

  • Es wurde Unterstützung für die Klassenannotation @ContentView hinzugefügt, mit der Sie angeben können, welche Layout-XML-Datei als Alternative zum Überschreiben von onCreateView() aufgebläht werden soll. Es wird empfohlen, sich ähnliche Arbeiten in onViewCreated() anzusehen. (aosp/837619)
  • fragment-testing hängt jetzt von androidx.test:core-ktx 1.1.0 (stabil) ab (b/121209673).
  • Sie können jetzt openActionBarOverflowOrOptionsMenu mit FragmentScenario verwenden, um Optionsmenüs zu testen, die in Fragmenten gehostet werden (b/121126668).

API-Änderungen

  • Die Methode requireArguments() wurde hinzugefügt, die ein @NonNull Bundle zurückgibt oder ein IllegalStateException auslöst (b/121196360).
  • Es wurde ein Hinweis hinzugefügt, dass getLifecycle(), getViewLifecycleOwner() und getViewLifecycleOwnerLiveData() nicht überschrieben werden sollten und in einem zukünftigen Release endgültig werden. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880714)
  • Es wurde ein Hinweis hinzugefügt, dass getViewModelStore() nicht überschrieben werden sollte und in einem zukünftigen Release endgültig festgelegt wird. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880713)
  • Ein Problem mit der binären Kompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)

Fehlerkorrekturen

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

Version 1.1.0-alpha03

17. Dezember 2018

Neue Funktionen

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

API-Änderungen

  • Mit FragmentScenario können Sie jetzt ein Design wie Theme.AppCompat angeben [b/119054431]. Dies ist eine funktionsgefährdende Änderung.
  • Die Methode requireView() wurde hinzugefügt, die eine @NonNull View zurückgibt oder eine IllegalStateException auslöst. [b/120241368]
  • Die Methode requireParentFragment() wurde hinzugefügt. Sie gibt ein @NonNull Fragment zurück oder löst eine IllegalStateException aus. [b/112103783]

Fehlerkorrekturen

  • Fehler „IllegalStateException: Failure saving state“ behoben b/120814739
  • Fragmente, die aus dem gespeicherten Instanzstatus wiederhergestellt werden, erhalten jetzt immer einen nicht leeren Bundle [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 „FragmentScenario“ können Sie jetzt ein Lambda für die Fragmentkonstruktion verwenden, anstatt eine FragmentFactory-Instanz zu übergeben. (aosp/812913)

Fehlerkorrekturen

  • Es wurde eine IllegalStateException behoben, die bei Verwendung verschachtelter Fragmente im Backstack auftrat (b/119256498).
  • Absturz bei Verwendung von FragmentScenario.recreate() mit einem FragmentFactory behoben (aosp/820540)
  • Ein Problem wurde behoben, durch das auf Zielfragmente nicht zugegriffen werden konnte, nachdem das Fragment entfernt wurde (aosp/807634).

Version 1.1.0-alpha01

5. November 2018

Dies ist die erste Version des fragment-testing-Artefakts und FragmentScenario, das auf den androidx.test:core-APIs basiert. Weitere Informationen finden Sie in der Dokumentation zum Testen von Fragmenten.

Neue Funktionen

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

API-Änderungen

  • Die Nullable-Annotationen wurden in der gesamten Fragment-API deutlich erweitert.

Fehlerkorrekturen

  • Ein Problem wurde behoben, das dazu führte, dass Fragmentvorgänge in LiveData fehlschlugen. (b/77944637)

Bekannte Probleme

  • Auf Target-Fragmente kann nicht mehr zugegriffen werden, nachdem ein Fragment aus dem FragmentManager entfernt wurde.
  • fragment-testing ist abhängig von androidx.test:core:1.0.0-beta01 statt von der korrekten androidx.test:core:1.0.0.