Fragment

Segmentieren Sie Ihre App in mehrere unabhängige Bildschirme, die in einer Aktivität gehostet werden.
Letzte Aktualisierung Stabile Version Release-Kandidat Beta-Ausgabe Alphaversion
12. Februar 2025 1.8.6 - -

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 erforderlichen Artefakte hinzu:

Cool

dependencies {
    def fragment_version = "1.8.3"

    // 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.3"

    // 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. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen 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 einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.8

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

  • Für die setOnApplyWindowInsetsListener-Überschreibung von FragmentContainerView wird jetzt ein Null-Listener verwendet, der den Vorgaben des Frameworks entspricht. (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

  • Behoben wurde ein Problem, bei dem IllegalStateException nur dann durch saveBackStack ausgelöst wurde, wenn eine Geste für die Vorhersage der Rückwärtsnavigation 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 bei Verwendung von AndroidX-Übergängen Fragmente abstürzten, wenn die Rückwärtstaste des Systems schnell gedrückt oder die Wischgeste zum Zurückgehen schnell ausgeführt wurde. (Ibc038, b/364804225)
  • Ein Problem in Fragmenten wurde behoben, bei dem durch Unterbrechung einer vorweggenommenen Zurück-Geste der Fragmentmanager in einen undefinierten Zustand versetzt wurde und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
  • Ein UninitializedPropertyAccessException in AndroidFragment wurde behoben, wenn die Klasse, die von Ihrer AndroidFragment-Instanz verwendet wird, dynamisch ausgetauscht wurde. (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 Geste „Zurückvorhersagen“ ausgeführt wird. Dadurch sollte verhindert werden, dass eine Systemwiederherstellung zu einer IndexOutOfBoundsException führt. (I9ba32, b/342316801)
  • AndroidFragment stürzt nicht mehr ab, wenn es der Komposition hinzugefügt wird, während der Status der enthaltenen Aktivität/des enthaltenen 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, in denen das übergeordnete Fragment in den Rückstapel des Fragments gelegt wird, richtig. So werden Probleme wie „Keine Ansicht für die ID gefunden“ vermieden, wenn zu diesem Fragment zurückgesprungen wird. (I94608)
  • Fragmente, die über die FragmentTransaction.add-Methode hinzugefügt werden und ein ViewGroup enthalten, warten jetzt auf onContainerAvailable, bevor sie mit onStart() fortfahren. Das wirkt sich auf Nutzer dieser API aus, z. B. auf AndroidFragment, die jetzt wartet, bis die AndroidFragment wieder in die Komposition eintritt, bevor sie sie durch onStart() weiterleitet. (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 sofort DESTROYED wurden, wenn eine vorweggenommene Zurück-Geste gestartet wurde. Jetzt bleiben sie im Status CREATED, 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 Namen der Fragmentklasse in die Compose-Hierarchie eingefügt werden können. Der Status des Fragments wird automatisch gespeichert und wiederhergestellt. Diese Methode sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mit AndroidViewBinding aufgebläht wird.
  • Der onBackStackChangeCancelled-Callback auf der OnBackStackChangedListener-Benutzeroberfläche von FragmentManager wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst, was ihn dem Timing des onBackStackChangeCommitted-Callbacks näher bringt.

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-Benutzeroberfläche wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst, was ihn dem Timing des onBackStackChangeCommitted-Callbacks näher bringt. (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 Vorhersagefunktion für die Rückwärtsnavigation wird jetzt nur noch für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator oder einen suchbaren AndroidX-Übergang haben. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem schwarzen Bildschirm führte. (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 Protokolle hinzugefügt, um anzugeben, warum die Ausführung fehlschlägt, wenn eine sharedElement ohne weitere Übergänge festgelegt wird. (Iec48e)
  • Fragment 1.7.0-rc02: Es wurde ein Fehler behoben, bei dem es zu einem Absturz kam, wenn einer Transaktion, bei der alle anderen Übergänge suchbar waren, ein nicht suchbares freigegebenes Element hinzugefügt wurde. Jetzt wird die Transaktion 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 der neuen AndroidFragment Composable können Sie der Compose-Hierarchie über den Namen der Fragmentklasse Fragmente hinzufügen. Der Status des Fragments wird automatisch gespeichert und wiederhergestellt. Diese kann als direkter Ersatz für die AndroidViewBinding Composable verwendet werden.(b/312895363, Icf841)

Änderungen an der Dokumentation

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

Update der Abhängigkeiten

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 Vorhersagefunktion für Rückwärtssprünge wird jetzt nur noch für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator oder einen suchbaren AndroidX-Übergang haben. Dadurch 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 vorausschauende Geste „Zurück“

  • Fragmente unterstützen jetzt die Vorhersage der In-App-Navigation bei Verwendung von Animator oder AndroidX Transition 1.5.0. So können Nutzer mit der Zurück-Geste das vorherige Fragment aufrufen, indem sie Ihren Animator/Übergang suchen, bevor sie sich entscheiden, die Transaktion durch Ausführen der Geste zu bestätigen oder abzubrechen.
Transition System 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 Sie nach der Aktivierung der Geste für die Vorhersage der Rückwärtsnavigation Probleme mit der Unterstützung in Fragments feststellen, erstellen Sie bitte ein Problem für Fragment und fügen Sie ein Beispielprojekt hinzu, in dem das Problem reproduziert werden kann. Sie können die Vorhersagefunktion für die Rückwärtsnavigation deaktivieren, indem Sie FragmentManager.enabledPredictiveBack(false) in den onCreate() Ihrer Aktivitäten eingeben.

FragmentManager.OnBackStackChangedListener() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfang von Ereignissen für den prognostizierten Rücklauffortschritt bzw. für abgebrochene Ereignisse.

Fragment Compose-Artefakt

Es wurde ein neues fragment-compose-Artefakt erstellt, das sich auf die Unterstützung von Apps konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig auf Compose basierenden Architektur migrieren.

Die erste Funktion in diesem neuen Artefakt ist eine content-Erweiterungsmethode für Fragment, mit der die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfacht wird. Dazu wird eine 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 Protokolle hinzugefügt, die angeben, warum die Ausführung fehlschlägt, wenn eine sharedElement ohne weitere Übergänge festgelegt wird. (Iec48e)
  • Es wurde ein Fehler behoben, durch den es zu einem Absturz kam, wenn einer Transaktion, bei der alle anderen Übergänge suchbar waren, ein nicht suchbares freigegebenes Element hinzugefügt wurde. Jetzt wird die Transaktion 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.

Update der Abhängigkeiten

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 ist jetzt in Kotlin geschrieben, sodass die Nullbarkeit des generischen Typs des Hosts mit der Nullbarkeit des Rückgabetyps von onGetHost() übereinstimmt. (I40af5)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das ein Fragment, auf das eine Geste für die Vorhersage der Rückwärtsnavigation ausgeführt wurde, nicht zerstört wurde, wenn es sich nicht in einem Container befand. Das Fragment wird jetzt sofort in den Endzustand verschoben. (Ida0d9)
  • Ein Problem in Fragmenten wurde behoben, bei dem einkommende Übergänge durch eine Touch-Geste für die Vorhersage der Rückwärtsbewegung unterbrochen wurden, wodurch die Ansicht beim Einblenden zerstört wurde 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, bei dem bei Verwendung der Unterstützung für die Vorhersage von Rückschritten von Fragmenten für Animator oder AndroidX-Übergängen von Fragmenten eine NullPointerException von handleOnBackProgressed geworfen wurde, wenn noch nie eine 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 sich auf die Unterstützung von Apps konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig auf Compose basierenden Architektur migrieren.

Die erste Funktion in diesem neuen Artefakt ist eine content-Erweiterungsmethode für Fragment, mit der die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfacht wird. Dazu wird eine ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

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

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

Neue Funktionen

  • FragmentManager.OnBackStackChangedListener() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfang von Ereignissen für den prognostizierten Rücklauffortschritt bzw. für abgebrochene Ereignisse. (214b87)

Bekanntes Problem

  • Wenn Sie die Unterstützung für die Vorhersage der Rückwärtsnavigation von Fragmenten für Animator oder die AndroidX-Übergangsfunktion verwenden, werfen Fragmente eine NullPointerException von handleOnBackProgressed, wenn noch keine FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. Wenn Sie einen Listener manuell hinzufügen, können Sie den Absturz umgehen. In der nächsten Version von Fragments wird es eine entsprechende Korrektur geben.

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, das durch das Festlegen eines Übergangs für ein freigegebenes Element und das Fehlen eines „enter/exitTransition“ verursacht wurde. (I8472b)
  • Über Fragment 1.6.2: Wenn das Fragment eines FragmentContainerView maximiert wird, sind seine Status wie FragmentManager, Host und id jetzt im onInflate-Callback zugänglich. (I1e44c, b/307427423)
  • Fragment 1.6.2: Wenn Sie mit clearBackStack mehrere Fragmente entfernen, werden jetzt auch die ViewModel-Werte aller verschachtelten Fragmente gelöscht, wenn die ViewModels-Werte des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)

Version 1.7.0-alpha06

4. Oktober 2023

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

Abhängigkeitsupdate

  • Die Funktion „Fragmente“ wurde aktualisiert, sodass sie von der neuen animateToStart API abhängt, die in Übergang 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 Vorhersage der Rückwärtsnavigation bei Verwendung von AndroidX-Übergängen. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Übergang springen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen. Sie müssen die Version Transition 1.5.0-alpha03 verwenden, um diese Funktion zu aktivieren. (Ib49b4, b/285175724)

Bekannte Probleme

  • Derzeit gibt es ein Problem, bei dem der Übergang nicht ausgeführt wird, wenn Sie eine Wischgeste zum Zurückgehen mit einem Übergang einmal abbrechen und die Wischgeste zum Zurückgehen dann noch einmal ausführen. Dies führt zu einem leeren Bildschirm. Das kann an einem Problem in der Übergangsbibliothek liegen. (b/300157785). Wenn dieses Problem auftritt, melden Sie es bitte bei Fragment und fügen Sie ein Beispielprojekt hinzu, in dem es reproduziert werden kann. Sie können die Vorhersagefunktion für die Rückwärtsnavigation deaktivieren, indem Sie FragmentManager.enabledPredictiveBack(false) in den onCreate() Ihrer Aktivitäten eingeben.

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 beim Abbrechen einer vorrausschauenden Zurück-Geste Fragmente nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
  • Ein Regressionsfehler wurde behoben, durch den Animationen mit Übergängen ausgeführt werden konnten. (I59f36)
  • Ein Problem wurde behoben, durch das bei der Verwendung der Funktion „Vorherige Seite“ mit Fragmenten ein Absturz verursacht wurde, wenn versucht wurde, zweimal hintereinander zum vorletzten Fragment im Rückstapel zurückzukehren. (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

  • Ein Problem mit Fragmenten bei der Verwendung der Vorhersagefunktion für die Schaltfläche „Zurück“ wurde behoben. Dieses Problem führte dazu, dass das erste Fragment im Rückstapel des Fragmentmanagers übersprungen und die Aktivität beendet wurde, wenn die Schaltfläche „Zurück“ über die Navigation mit drei Schaltflächen oder die Vorhersagefunktion für die Schaltfläche „Zurück“ 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 Fragmente mit vorausschauenden Zurück-Gesten ab API 34 verwenden und ein Übergangssystem verwenden, das keine Suche (Animations, Transitions) oder gar keine Übergänge unterstützt, wartet Fragments 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

  • Fragmente unterstützen jetzt die Vorhersage der In-App-Navigation bei Verwendung von Animator. So können Sie mit der Zurück-Geste das vorherige Fragment mit Ihrem benutzerdefinierten Animator aufrufen, bevor Sie entscheiden, ob Sie die Transaktion über die abgeschlossene Geste bestätigen oder abbrechen möchten. Sie können dieses neue Verhalten auch deaktivieren, indem Sie die experimentelle Funktion 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 einer FragmentContainerView maximiert wird, sind ihre Status wie FragmentManager, Host und id jetzt im onInflate-Callback verfügbar. (I1e44c, b/307427423)
  • Wenn Sie mit clearBackStack mehrere Fragmente entfernen, wird jetzt auch das ViewModel des verschachtelten Fragments 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 angehalten, aber nicht zerstört wurde, auch dann fälschlicherweise im Cache gespeichert wurde, wenn die Fragmentinstanz wieder in den Status RESUMED versetzt wurde. Dadurch wird der im Cache gespeicherte Status wiederverwendet, wenn sich diese Fragmentinstanz im Backstack befindet, wenn Sie die API für mehrere Backstacks verwenden, um dieses Fragment zu speichern und wiederherzustellen. (I71288, b/246289075)

Abhängigkeitsupdate

  • Das Fragment hängt jetzt von Activity 1.7.2 ab. Dadurch wird ein Problem behoben, bei dem Kotlin-Nutzer ComponentDialog nicht ohne 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 in den Status der privaten Bibliothek (benutzerdefinierte Parcelable-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser wird jetzt immer in einem Bundle gespeichert, über das genau ermittelt werden kann, woher der Status eines Fragments stammt.
  • Die FragmentManager.OnBackStackChangedListener-Schnittstelle wurde um zwei zusätzliche Rückrufe von onBackStackChangeStarted und onBackStackChangeCommitted erweitert, die mit jeder Fragment aufgerufen werden, kurz bevor sie dem Fragment-Backstack hinzugefügt oder daraus entfernt werden bzw. kurz nach dem Commit der Transaktion.
  • FragmentStrictMode wurde eine neue WrongNestedHierarchyViolation hinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht der childFragmentManager des übergeordneten Elements hinzugefügt wurde.
  • Die Fragment- und FragmentManager-APIs, die einen Intent- oder IntentSender-Wert annehmen, sind jetzt korrekt mit @NonNull annotiert, um das Übergeben eines Nullwerts zu verhindern. Ein Nullwert würde immer sofort zum Absturz der jeweiligen Android-Framework-APIs führen, die von diesen Methoden aufgerufen werden.
  • DialogFragment bietet jetzt über die requireComponentDialog() API Zugriff auf die zugrunde liegenden ComponentDialog.
  • Das Fragment hängt jetzt vom Lifecycle 2.6.1 ab.
  • Das Fragment hängt jetzt von SavedState 1.2.1 ab.
  • Das Fragment hängt jetzt von ProfileInstaller 1.3.0 ab.
  • Das fragment-testing-manifest-Artefakt trennt die Manifesteinträge vom Rest der Komponenten für den Fragmenttest. 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

  • Es wurde ein Problem behoben, durch das ActivityResult mit dem falschen Anfragecode gesendet wurden, wenn mehrere startActivityForResult-Anfragen nacheinander gesendet wurden. (If0b9d, b/249519359)
  • Ein Problem wurde behoben, bei dem die onBackStackChangeListener-Callbacks für Transaktionen gesendet wurden, die den Backstack nicht tatsächlich geändert haben, wenn sie mit Transaktionen vermischt wurden, die dies tun. (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 verschobene Fragment dann ersetzen, wird es nicht mehr geleaked. (I2ec7d, b/276375110)
  • Mit den neuen onBackStackChangeStarted- und onBackStackChangeCommitted-Callbacks wird ein Fragment jetzt nur noch einmal gesendet, 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 liegenden ComponentDialog. (I022e3, b/234274777)
  • Die Fragment-APIs commitNow(), executePendingTransactions() und popBackStackImmediate() wurden mit @MainThread annotiert. Das bedeutet, dass jetzt alle Build-Fehler geworfen werden, wenn sie nicht vom Hauptthread aufgerufen werden, anstatt bei Laufzeitfehlern zu warten. (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)
  • OnBackStackChangedListener-, onBackStackChangeStarted- und onBackStackChangeCommitted-Callbacks werden jetzt nur ausgeführt, wenn sich der FragmentManager-Zurückstapel ä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, damit er vor Fragmentvorgängen ausgeführt wird. So wird sichergestellt, dass dem Rückruf niemals ein nicht verbundenes Fragment übergeben wird. (I66a76, b/273568280)

Fehlerkorrekturen

  • Fragment 1.5.6: Es wurde ein Problem behoben, durch das der Aufruf von clearFragmentResultListener in einer setFragmentResultListener nicht funktionierte, wenn die 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, durch das das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüpunkte hinzugefügt hatte oder nicht. (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 auf onBackStackChangedListener von FragmentManager wird jetzt ausgeführt, bevor sich Fragmente in ihre Zielstatus bewegen. (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-Benutzeroberfläche bietet jetzt zwei zusätzliche Rückruffunktionen, onBackStackChangeStarted und onBackStackChangeCommitted, die zusätzliche Informationen und Steuerelemente bei Änderungen des Backstacks in der FragmentManager ermöglichen. (Ib7ce5, b/238686802)

API-Änderungen

  • Die Fragment- und FragmentManager-APIs, die ein Intent oder IntentSender annehmen, sind jetzt korrekt mit @NonNull annotiert, um das Übergeben eines Nullwerts zu verhindern. Ein Nullwert würde immer sofort zum Absturz der jeweiligen Android-Framework-APIs führen, 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 wurde eine neue WrongNestedHierarchyViolation hinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht der childFragmentManager des übergeordneten Elements hinzugefügt wurde. (I72521, b/249299268)

Verhaltensänderungen

  • Fragmente werden jetzt in ihren SavedStateRegistry-Zustand vor onAttach() wiederhergestellt, damit sie über alle aufsteigenden Lebenszyklusmethoden verfügbar sind. (I1e2b1)

API-Änderungen

  • Das fragment-testing-manifest-Artefakt trennt die Manifesteinträge vom Rest der Komponenten für den Fragmenttest. 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: In Fragmenten wird der Status ViewModel 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 werden losgelassen. Version 1.6.0-alpha03 enthält diese Commits.

API-Änderungen

  • Bei Klassen, die DialogFragment erweitern, muss in ihren onDismiss()-Überschreibungen jetzt super aufgerufen werden. (I14798, b/238928865)

Fehlerkorrekturen

  • Wir haben Fehler behoben, die durch die Integration der neuen Rückrufschnittstellen für Anbieter (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) verursacht wurden. So erhalten Fragmente jetzt immer die richtigen Rückrufe. (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 werden losgelassen. Version 1.6.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • 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 in den austretenden Fragmenten die falsche Animation/Animator 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 werden losgelassen. Version 1.6.0-alpha01 enthält diese Commits.

Verhaltensänderungen

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

Fehlerkorrekturen

  • Aus Fragment 1.5.1: Behebung einer Regression im DialogFragmentCallbacksDetector, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)

Update der Abhängigkeiten

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 werden losgelassen. Version 1.5.7 enthält diese Commits.

Fehlerkorrekturen

  • Wenn Sie postponeEnterTransition mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzen, wird es nicht mehr geleaked. (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 werden losgelassen. Version 1.5.6 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte oder nicht. (50f098, b/244336571)
  • Ein Problem wurde behoben, durch das der Aufruf von clearFragmentResultListener in einer setFragmentResultListener nicht funktionierte, wenn die Lifecycle bereits STARTED war und ein Ergebnis bereits verfügbar war. (If7458)

Version 1.5.5

7. Dezember 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 und androidx.fragment:fragment-testing:1.5.5 werden losgelassen. Version 1.5.5 enthält diese Commits.

Fehlerkorrekturen

  • Der Status ViewModel wird in Fragmenten nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung 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 werden losgelassen. Version 1.5.4 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem bei Verwendung einer benutzerdefinierten FragmentController mit einem Host, der keine Anbieter-Callback-Schnittstelle (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) implementiert, und Aufrufen der veralteten Dispatch-Funktion kein Versand an untergeordnete Fragmente erfolgte. (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 werden losgelassen. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den Fragmente im Backstack onMultiWindowModeChanged()-, onPictureInPictureModeChanged()-, onLowMemory()- und onConfigurationChanged()-Callbacks 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 werden losgelassen. Version 1.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem beim gleichzeitigen Ausführen einer popBackStack()- und einer replace()-Transaktion in den austretenden Fragmenten möglicherweise 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 werden losgelassen. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

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

Update der Abhängigkeiten

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 werden losgelassen. Version 1.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.4.0

  • Integration von CreationExtras: Fragment kann jetzt über die CreationExtras von Lifecycle 2.5.0 einen zustandslosen ViewModelProvider.Factory bereitstellen.
  • Integration von Komponentendialogen: DialogFragment verwendet jetzt ComponentDialog über Aktivität 1.5.0 als Standarddialog, der von onCreateDialog() zurückgegeben wird.
  • Neugestaltung des gespeicherten Instanzstatus: Bei Fragmenten wird die Art und Weise geändert, wie der Instanzstatus gespeichert wird. So soll klar erkennbar sein, welcher Status im Fragment gespeichert wurde und woher er stammt. Zu den aktuellen Änderungen gehören:
    • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einem Bundle anstelle direkt in einer benutzerdefinierten Parcelable.
    • Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht gesendet wurden, werden jetzt getrennt vom internen Status der FragmentManager gespeichert.
    • Der Status, der mit jedem einzelnen Fragment verknüpft ist, wird jetzt getrennt vom internen Status der FragmentManager gespeichert. So kannst du den gespeicherten Status eines einzelnen Fragments mit den eindeutigen IDs in den Fragment-Debug-Logs in Beziehung setzen.

Weitere Änderungen

  • Mit FragmentStrictMode können private Drittanbieter-Fragmente jetzt bestimmte Strafen für Verstöße umgehen, indem sie allowViolation() mit dem Klassennamen verwenden.
  • Die Fragment-APIs zum Bereitstellen eines Menüs für die ActionBar Ihrer Aktivität wurden eingestellt. Die in Aktivität 1.4.0 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste 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 werden losgelassen. Version 1.5.0-rc01 enthält diese Commits.

Refactoring des gespeicherten Instanzstatus

  • Der dem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status der FragmentManager gespeichert. So können Sie den gespeicherten Status eines einzelnen Fragments mit den eindeutigen IDs in den Fragment-Debug-Logs in Beziehung setzen. (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 werden losgelassen. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • DialogFragment hat eine neue dismissNow-Methode hinzugefügt, die commitNow zur Parität mit der showNow-Funktion verwendet. 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 anstelle direkt in einer 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 gesendet wurden, werden jetzt getrennt vom internen Status der FragmentManager gespeichert. So können Sie besser nachvollziehen, welche Ergebnisse im Rahmen 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 werden losgelassen. 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 werden losgelassen. 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 mit Ihrer Aktivität verknüpfen und nicht einzeln 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 einer 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 werden losgelassen. Version 1.5.0-alpha03 enthält diese Commits.

API-Änderungen

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

Verhaltensänderungen

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 werden losgelassen. Version 1.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Mit FragmentStrictMode können private Drittanbieter-Fragmente jetzt bestimmte Strafen für Verstöße umgehen, indem sie allowViolation() mit dem Klassennamen verwenden. (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 werden losgelassen. Version 1.5.0-alpha01 enthält diese Commits.

Neue Funktionen

Fehlerkorrekturen

  • Fragment 1.4.1: FragmentContainerView löst keine illegale Statusausnahme mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)
  • Fragment 1.4.1: Wenn du ein benutzerdefiniertes ownerProducer-Lambda mit der by viewModels()-Lazily-Funktion verwendest, wird jetzt die defaultViewModelProviderFactory dieses Eigentümers verwendet, wenn kein benutzerdefiniertes ViewModelProvider.Factory angegeben ist, anstatt immer die Fabrik des Fragments zu verwenden. (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 werden losgelassen. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • 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)
  • Wenn du ein benutzerdefiniertes ownerProducer-Lambda mit der Lazy-Funktion by viewModels() verwendest, wird jetzt die defaultViewModelProviderFactory dieses Eigentümers verwendet, wenn kein benutzerdefiniertes ViewModelProvider.Factory angegeben ist, anstatt immer die Fabrik des Fragments zu verwenden. (I56170, b/214106513)

Version 1.4.0

17. November 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 und androidx.fragment:fragment-testing:1.4.0 werden losgelassen. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre App oder die von Ihnen verwendeten Bibliotheken keine veralteten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Protokollnachricht drucken, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. Die FragmentStrictMode.Policy, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy() auf einem FragmentManager festgelegt werden. Diese Richtlinie gilt für FragmentManager und mittelbar für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Weitere Informationen finden Sie unter StrictMode für Fragmente.
  • FragmentContainerView bietet jetzt die Methode getFragment(), die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Dabei wird dieselbe Logik wie bei findFragmentById() mit der ID der FragmentContainerView verwendet, aber der Aufruf kann verschachtelt werden.

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

  • Das Attribut FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} wurde hinzugefügt, um anzugeben, ob die Standardanimation für den Aktivitätsübergang aus Ihrem Design im Fragmentübergang 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 aus Fragmenttransaktionen, die addToBackStack() verwendet haben. So können Sie diese Transaktionen aufrufen und zum vorherigen Status zurückkehren. Mit den Mechanismen zum Speichern des Status mit Fragmenten können Sie den Status Ihrer Fragmente entsprechend wiederherstellen.

Mit 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 der 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 dem ursprünglichen 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 es asynchron ist und dazu führt, dass alle Fragmenttransaktionen zurück zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es unterscheidet sich jedoch in einigen wichtigen Punkten:

  • saveBackStack() ist immer inklusiv.
  • Im Gegensatz zu popBackStack(), bei dem alle Transaktionen im Backstack an die Oberfläche gebracht werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Nullname angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben.
  • Der Status aller über diese Transaktionen hinzugefügten Fragmente wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert, onSaveInstanceState() jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. Alle mit diesen Fragmenten verknüpften ViewModel-Instanzen werden beibehalten und onCleared() wird nicht aufgerufen.

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 geschlossen sein, d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieses Transaktionssatzes verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Backstack vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein in der Navigationsleiste gespeichertes Fragment sein oder ein solches Fragment in seinem übergeordneten Satz von untergeordneten Fragmenten enthalten, damit die 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 Rückstapel jeweils wiederhergestellt oder gelöscht wird, passiert bei diesen beiden Befehlen nichts, wenn Sie saveBackStack() nicht zuvor mit demselben Namen aufgerufen haben.

Weitere Informationen finden Sie unter Mehrere Backstacks: Ein detaillierter Blick.

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 werden losgelassen. Version 1.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Übergeordnete Fragmente leiten onHiddenChanged() jetzt durch die gesamte Hierarchie weiter, bevor sie ihren eigenen Rückruf 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 Recycler-Ansicht 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 von DetachAndAttachFragmentInSameFragmentTransaction wurde auf DetachAndAttachSameFragment gekürzt. (e9eca3)

Version 1.4.0-alpha10

29. September 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 und androidx.fragment:fragment-testing:1.4.0-alpha10 werden losgelassen. Version 1.4.0-alpha10 enthält diese Commits.

Fussel

  • Die DetachAndAttachFragmentInSameFragmentTransaction-Lint-Warnung wurde hinzugefügt, um zu erkennen, wenn sowohl detach() als auch attach() auf dieselbe Fragment in derselben FragmentTransaction aufgerufen werden. Da sich diese komplementären Vorgänge in derselben Transaktion gegenseitig aufheben, müssen sie in separate Transaktionen aufgeteilt werden, damit etwas passiert. (aosp/1832956, b/200867930)
  • Der FragmentAddMenuProvider-Lint-Fehler zur Korrektur der Verwendung des Fragment-Lebenszyklus im Fragment-Ansichts-Lebenszyklus bei Verwendung der addMenuProvider API von MenuHost wurde hinzugefügt. (aosp/1830457, b/200326272)

Aktualisierungen der Dokumentation

  • Die Mitteilung zur Einstellung von APIs, die jetzt von den Activity Result APIs verarbeitet werden, nämlich startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions und onRequestPermissionsResult, 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 werden losgelassen. 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 Nullbarkeit korrekt berücksichtigt. (If694a, b/189629145)
  • FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Status eines Fragments, das mit setReorderingAllowed(true) hinzugefügt und dann sofort entfernt wurde, bevor ausstehende Transaktionen ausgeführt wurden, nicht ordnungsgemäß 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 werden losgelassen. Version 1.4.0-alpha08 enthält diese Commits.

Fehlerkorrekturen

  • Die UseRequireInsteadOfGet-Lint-Prüfung wurde verbessert, um redundante Klammern besser zu behandeln. (I2d865)
  • Die UseGetLayoutInflater-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu behandeln. (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 werden losgelassen. Version 1.4.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit mehreren Rückstapeln wurde behoben, bei dem beim schnellen Wechseln zwischen Rückstapeln ein IllegalStateException angezeigt wurde, während eine FragmentTransaction wiederhergestellt wurde, oder eine zweite Kopie eines Fragments angezeigt wurde. (I9039f)
  • Ein Problem wurde behoben, durch das FragmentManager eine Kopie des zuvor über saveBackStack() gespeicherten Status beibehielt, auch nachdem dieser Status wiederhergestellt wurde. (Ied212)
  • Die dismissAllowingStateLoss()-Methode von DialogFragment stürzt nicht mehr ab, wenn Sie sie nach dem Speichern des Status aufrufen, wenn Sie das DialogFragment speziell über die show(FragmentTransaction, String)-Methode hinzufügen. (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 werden losgelassen. Version 1.4.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Fragment 1.3.6: Die Ansicht des Fragments wird jetzt richtig auf GONE gesetzt, wenn hide() verwendet wird, während für die Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • Aus Fragment 1.3.6: FragmentActivity löst jetzt immer den gespeicherten Status als ersten Vorgang in den Lebenszyklus-Callbacks auf, die er überschreibt. (I6db7a)

Update der Abhängigkeiten

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 werden losgelassen. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

  • FragmentManager verwendet jetzt SavedStateRegistry, um seinen Status zu speichern. Die Methoden saveAllState() und restoreSavedState() wurden in FragmentController ebenfalls eingestellt. Wenn du FragmentController verwendest, um Fragmente außerhalb von FragmentActivity zu hosten, solltest du SavedStateRegistryOwner in deiner FragmentHostCallbacks implementieren. (Iba68e, b/188734238)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem der Aufruf von saveBackStack() im Rahmen der Unterstützung mehrerer Backstacks fehlgeschlagen ist, wenn gleichzeitig ein FragmentTransaction ausgeführt wurde, für den replace() verwendet wurde. (I73137)
  • Behoben wurde ein NullPointerException, das nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen auftrat, wenn die restoreBackStack() API für die Unterstützung mehrerer Backstacks verwendet wurde. Außerdem wurde ein Problem behoben, bei dem setReorderingAllowed(true) nicht für alle Transaktionen überprüft wurde. (I8c593)
  • Ein Problem wurde behoben, durch das FragmentManager fälschlicherweise den zuvor gespeicherten Status von Fragmenten wiederhergestellt hat, auch nachdem diese Fragmente aus der FragmentManager entfernt wurden. Dadurch wurde der gespeicherte Status im Laufe der Zeit immer größer. (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 werden losgelassen. Version 1.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Alle Fragment StrictMode-Klassen Violation wurden um detailliertere Fehlermeldungen ergänzt, 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)
    • WrongFragmentContainerViolation enthält 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 fragliche Fragment und alle anderen enthaltenen Informationen enthalten. (Icc6ac)
    • Die Klassen, die RetainInstanceUsageViolation erweitern, enthalten jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55)
    • FragmentReuseViolation enthält jetzt eine detailliertere Fehlermeldung mit der vorherigen ID des Fragments. (I28ce2)
    • SetUserVisibleHintViolation enthält jetzt eine ausführlichere Fehlermeldung, die enthält, auf welchen Wert der für Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)

Verhaltensänderungen

  • Die Einschränkung beim Aufrufen von fitsSystemWindows auf einem FragmentContainerView wurde aufgehoben. Die App stürzt dadurch nicht mehr ab. (6b8ddd, b/190622202)

Fehlerkorrekturen

  • Seit Fragment 1.3.5: Behoben wurde eine Regression bei Übergängen mit freigegebenen Elementen, die durch aosp/1679887 in Fragment 1.3.4 eingeführt wurde. In Fragmenten werden jetzt Übergangsgruppen korrekt verarbeitet (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background). Außerdem werden für freigegebene Elemente keine IndexOutOfBoundsExceptions mehr ausgegeben. (I16484, b/188679569, b/188969304)
  • Die FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein entferntes Fragment auszublenden. (I573dd, b/183634730)
  • Die OnCreateDialogIncorrectCallback-Lint-Prüfung 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 werden losgelassen. 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 aktuell verwendeten Richtlinie für den strengen Modus. (I02df6, b/187872638)
  • FragmentStrictMode unterstützt jetzt die Ausnahme bestimmter Fragment-Klassen vom strengen Modus Violation, sodass für diese Klasse keine Strafen verhängt werden. (Ib4e5d, b/184786736)

  • Die Klasse FragmentStrictMode Violation wurde erweitert, um je nach Verstoß Strukturinformationen hinzuzufügen. So können Sie genau nachvollziehen, was den Verstoß verursacht hat, und das fragliche Fragment (If5118, b/187871150) prüfen. Jede Violation enthält Folgendes:

    • WrongFragmentContainerViolation enthält jetzt den ViewGroup, dem die Fragment hinzugefügt werden sollte. (I83c75, b/187871150)
    • TargetFragmentUsageViolation wurde in SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation und GetTargetFragmentRequestCodeUsageViolation erweitert. 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 der Fragment, die die Verstoß auslöste. (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)

Verhaltensänderungen

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

Neue Funktionen

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

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Es wurde das Attribut FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} hinzugefügt, mit dem angegeben werden kann, ob die Standardanimation für den Aktivitätsübergang aus Ihrem Design im Fragmentübergang aktiviert werden soll. (I46652)

Mehrere Backstacks

Der FragmentManager verwaltet einen Backstack aus Fragmenttransaktionen, die addToBackStack() verwendet haben. So können Sie diese Transaktionen aufrufen und zum vorherigen Status zurückkehren. Mit den Mechanismen zum Speichern des Status mit Fragmenten können Sie den Status Ihrer Fragmente entsprechend wiederherstellen.

Mit dieser Version werden diese Mechanismen durch zwei neue FragmentManager APIs erweitert: saveBackStack(String name) und restoreBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status der 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 dem ursprünglichen 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 es asynchron ist und dazu führt, dass alle Fragmenttransaktionen zurück zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es unterscheidet sich jedoch in einigen wichtigen Punkten:

  • saveBackStack() ist immer inklusiv.
  • Im Gegensatz zu popBackStack(), bei dem alle Transaktionen im Backstack an die Oberfläche gebracht werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Nullname angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben.
  • Der Status aller über diese Transaktionen hinzugefügten Fragmente wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert, onSaveInstanceState() jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. Alle mit diesen Fragmenten verknüpften ViewModel-Instanzen werden beibehalten und onCleared() wird nicht aufgerufen.

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 geschlossen sein, d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieses Transaktionssatzes verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Backstack vorgenommen wurden.
  • Kein gespeichertes Fragment darf ein in der Navigationsleiste gespeichertes Fragment sein oder ein solches Fragment in seinem übergeordneten Satz von untergeordneten Fragmenten enthalten, damit die FragmentManager nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.

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

Fragment StrictMode

Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre App oder die von Ihnen verwendeten Bibliotheken keine veralteten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Protokollnachricht drucken, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. Die FragmentStrictMode.Policy, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy() auf einem FragmentManager festgelegt werden. Diese Richtlinie gilt für FragmentManager und mittelbar für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (#123, #131, #150, b/143774122)

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

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

Fehlerkorrekturen

  • In Fragment 1.3.4 wurde eine Regression behoben, die in Fragment 1.3.3 bei Verwendung der ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder der Jetpack Compose-Methode von viewModel() in einem Fragment aufgetreten ist. In diesen Anwendungsfällen wird jetzt die von Ihrem Fragment bereitgestellte ViewModelProvider.Factory korrekt verwendet, wenn sie getDefaultViewModelProviderFactory() überschreibt (wie bei @AndroidEntryPoint-annotierten Fragmenten bei Verwendung von Hilt). Wenn Sie diese Methode nicht überschreiben, wird als Standard-Factory ein SavedStateViewModelFactory erstellt, das seinen Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Ab Fragment 1.3.4: Wenn du FragmentContainerView in API 29 verwendest, werden Einleger nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben. (I1bb78, b/186012452)
  • Ab Fragment 1.3.4: Sie können Ihre Parcelable jetzt nach dem Prozesstod aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Fragment 1.3.4: Wenn bei einer ViewGroup mit freigegebenen Elementen die Eigenschaft transitionGroup auf „false“ gesetzt ist, wird die ViewGroup jetzt richtig übergangen. (I99675)

Externer Beitrag

Version 1.3

Version 1.3.6

21. Juli 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 und androidx.fragment:fragment-testing:1.3.6 werden losgelassen. Version 1.3.6 enthält diese Commits.

Fehlerkorrekturen

  • Fragment 1.4.0-alpha03: Der FragmentManager stürzt nicht mehr ab, wenn Sie versuchen, ein entferntes Fragment auszublenden. (I573dd, b/183634730)
  • Die Ansicht des Fragments wird jetzt korrekt auf GONE gesetzt, wenn hide() verwendet wird, während für die Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • FragmentActivity entsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den Lebenszyklus-Callbacks, die sie überschreibt. (I6db7a)

Update der Abhängigkeiten

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 werden losgelassen. Version 1.3.5 enthält diese Commits.

Fehlerkorrekturen

  • Behoben wurde eine Regression bei Übergängen für freigegebene Elemente, die durch aosp/1679887 in Fragment 1.3.4 eingeführt wurde. In Fragmenten werden jetzt Übergangsgruppen korrekt verarbeitet (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background). Außerdem werden für freigegebene Elemente 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 werden losgelassen. Version 1.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Regression behoben, die in Fragment 1.3.3 aufgetreten ist, wenn die ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder die Jetpack Compose-Methode von viewModel() in einem Fragment verwendet wurde, bei dem Hilt verwendet wurde. Bei diesen Anwendungsfällen wird jetzt die von Ihrem Fragment bereitgestellte ViewModelProvider.Factory korrekt verwendet, wenn sie getDefaultViewModelProviderFactory() überschreibt (wie bei mit @AndroidEntryPoint annotierten Fragmenten). Wenn Sie diese Methode nicht überschreiben, wird als Standard-Factory ein SavedStateViewModelFactory erstellt, das seinen Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368)
  • Wenn Sie FragmentContainerView in API 29 verwenden, werden Einblendungen nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mit BottomNavigationBar- und FloatingActionButton-Instanzen behoben. (I1bb78, b/186012452)
  • Sie können Ihre Parcelable jetzt nach dem Prozesstod aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Wenn bei einem Übergang mit freigegebenen Elementen in einer ViewGroup transitionGroup auf „false“ gesetzt ist, wird der Übergang 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 werden losgelassen. Version 1.3.3 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

  • Eine Regression im Fragment 1.3.2 wurde behoben, die dazu führte, dass popEnter-Animationen nicht ausgeführt wurden, wenn ein FragmentTransaction mit einem setPrimaryNavFragment-Vorgang geöffnet wurde, z. B. solche, die von NavHostFragment verwendet werden. (I38c87, b/183877426)
  • FragmentContainerView sorgt jetzt dafür, dass für jedes Fragment ein neuer Satz von WindowInsets gesendet wird, sodass jedes Fragment die Einblendungen unabhängig voneinander nutzen kann. (I63f68, b/172153900)
  • DialogFragment behandelt jetzt Fälle, in denen einem Container ein untergeordnetes Fragment hinzugefügt wird, das dieselbe ID wie ein Container in Ihrer benutzerdefinierten Dialog-Klasse hat, korrekt. Dadurch werden Probleme mit der Ansichtshierarchie behoben, wenn IDs wiederverwendet werden, die intern von Dialogen wie BottomSheetDialog verwendet werden. (Ie6279, b/180021387)
  • FragmentManager.dump() wird das erste Fragment in der Liste der aktiven Fragmente jetzt korrekt eingerückt. (If5c33, b/183705451)

Fehlerkorrekturen für den neuen State Manager

  • Der neue Fragmentstatusmanager verarbeitet jetzt korrekt Ausstiegsübergänge mit Ausblendvorgängen. (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 werden losgelassen. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen für den neuen State Manager

  • Wenn Sie sowohl popBackStack()- als auch commit()-Vorgänge gleichzeitig ausführen, wird jetzt mit dem letzten Vorgang die Richtung für alle Animationen festgelegt, anstatt einige Pop- und einige Eintrittsanimationen auszuführen. (I7072e, b/181142246)
  • Bei einer Überblendung von freigegebenen Elementen wird der Name der Überblendung für Ansichten in einer Hierarchie von freigegebenen Elementen nicht mehr gelöscht. (I4d4a6, b/179934757)

Abhängigkeitsupdates

  • Fragment hängt jetzt von Activity 1.2.2 ab. Dadurch wird ein Problem mit der InvalidFragmentVersionForActivityResult-Lint-Prüfung 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 werden losgelassen. Version 1.3.1 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

  • Fragmente, die mithilfe von FragmentContainerView in eine bereits vorhandene RESUMED-Aktivität eingefügt wurden, werden nach einer Konfigurationsänderung jetzt richtig angezeigt. (Ie14c8, b/180538371)
  • Am Ende des Fragments toString() ist kein zusätzliches } mehr zu sehen (I54705, b/177761088)
  • Überschriebene Methoden in FragmentActivity übernehmen jetzt korrekt die JavaDoc-Informationen der Basismethode (I736ce, b/139548782)
  • Die Parameterdokumente für setFragmentResult und setFragmentResultListener wurden aktualisiert, um darauf hinzuweisen, dass sie keine Nullwerte mehr akzeptieren (I990ba, b/178348386)

Fehlerkorrekturen für den neuen State Manager

  • Behebung eines Speicherlecks in Fragmenten, das durch mFocusedView verursacht wurde (Ib4e9e, b/179925887)
  • Fragmente rufen jetzt bei Verwendung von Transaktionen zum Ein-/Ausblenden onCreateOptionsMenu richtig auf (I8bce8, b/180255554)
  • Untergeordnete Fragmente mit Übergängen, die vor dem Layouten des Fragments beginnen, erreichen jetzt richtig RESUMED (Ic11e6, b/180825150)
  • Mit dem <fragment>-Tag aufgeblähte Fragmente werden jetzt immer an RESUMED gesendet (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 werden losgelassen. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Neuer Statusmanager: Durch eine umfassende Umstrukturierung der internen Funktionen von FragmentManager wurden zahlreiche Probleme im Zusammenhang mit dem Senden von Lebenszyklusereignissen, Animationen und Übergängen sowie der Verarbeitung verschobener Fragmente behoben.
  • Integration der Activity Result API: Es wurde Unterstützung für die ActivityResultRegistry API hinzugefügt, die in Activity 1.2.0 eingeführt wurde, um startActivityForResult()+onActivityResult()- sowie requestPermissions()+onRequestPermissionsResult()-Abläufe zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem gibt es jetzt Hooks zum Testen dieser Abläufe. Weitere Informationen finden Sie im aktualisierten Hilfeartikel Ergebnis aus einer Aktivität abrufen.

    • In dieser Version wurden mehrere Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die die Funktion der Activity Result API in früheren Versionen von FragmentActivity verhindert haben. Sie müssen auf Fragment 1.3.0 umstellen, um die Activity Result APIs in einer FragmentActivity oder AppCompatActivity zu verwenden.
  • Fragment Result API: Am FragmentManager wurde die Unterstützung für die Weitergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs hinzugefügt. Das funktioniert für hierarchische Fragmente (übergeordnetes/untergeordnetes Fragment), DialogFragmente und Fragmente in der Navigation. So wird sichergestellt, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es mindestens STARTED ist. Die Target-Fragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Weitere Informationen finden Sie unter Ergebnisse mithilfe der Fragment Result API abrufen.

  • FragmentOnAttachListener: Der onAttachFragment()-Callback auf FragmentActivity und Fragment wurde eingestellt. Es wurde eine neue FragmentOnAttachListener hinzugefügt, die eine flexiblere Alternative bietet. So können onAttachFragment() an separate, testbare Listener delegiert werden und es wird unterstützt, einem anderen FragmentManager als dem direkten untergeordneten FragmentManager einen Listener hinzuzufügen.

  • FragmentScenario-Verbesserungen: Die FragmentScenario-Klasse aus dem fragment-testing-Artefakt wurde in Kotlin neu geschrieben und es wurden einige Verbesserungen vorgenommen:

    • FragmentScenario verwendet jetzt setMaxLifecycle(), um moveToState() zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt.
    • FragmentScenario unterstützt jetzt das Festlegen eines ersten Lifecycle.State, 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 reifierten Kotlin-Erweiterungsmethode withFragment, mit der Sie einen Wert zurückgeben können. Insbesondere werden im angegebenen Block ausgelöste Ausnahmen noch einmal geworfen.
  • 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. Wenn Sie also ein View in einem Fragment verwenden, wird das Fragment als ViewModelStoreOwner zurückgegeben und ein SavedStateRegistryOwner und LifecycleOwner, die mit dem Lebenszyklus der Ansicht des Fragments verknüpft sind.

  • Änderungen an der TRANSIT_-Animation: Für die Standardeffekte von Fragmenten (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 setRetainInstance()-Methode für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Speichern des Status, die mit Aktivitäten, Fragmenten und Navigationsgrafiken verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den zu behaltenden Status getrennt halten. Dadurch wird eine häufige Ursache für Lecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor der ViewModel und der onCleared()-Callback, den sie empfängt).

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

Version 1.3.0-rc02

27. Januar 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 und androidx.fragment:fragment-testing:1.3.0-rc02 werden losgelassen. Version 1.3.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das ein übergeordnetes DialogFragment nach einer Konfigurationsänderung über einem untergeordneten DialogFragment angezeigt wurde. Untergeordnete Dialogfeldfragmente werden jetzt immer über einem übergeordneten Dialogfeldfragment angezeigt. (I30806, b/177439520)
  • Ein Problem wurde behoben, durch das beim Ausführen eines hide-Vorgangs mit einem Animation-Fragment das ausgeblendete Fragment am Ende der Animation flackerte. (I57e22, b/175417675)
  • Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen jetzt RESUMED. (I1fc1d, b/177154873)

Fehlerkorrekturen für den neuen State Manager

  • Die Ansicht des Fragments Lifecycle verarbeitet jetzt korrekt Fälle, in denen die Ansicht des Fragments zerstört wird, bevor Lifecycle CREATED erreicht. So werden Ausnahmen wie „Kein Ereignis von INITIALIZED“ vermieden. (eda2bd, b/176138645)
  • Fragmente, die ein Animator verwenden, werden jetzt in der richtigen Reihenfolge angezeigt, wenn FragmentContainerView verwendet wird. (Id9aa3, b/176089197)

Version 1.3.0-rc01

16. Dezember 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 und androidx.fragment:fragment-testing:1.3.0-rc01 werden losgelassen. 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)

Fehlerkorrekturen für den neuen State Manager

  • Lecks und visuelle Artefakte wurden behoben, die beim Hinzufügen eines Fragments mit einem Animation zu einem FragmentContainerView und anschließenden Unterbrechen dieser Addition durch einen Pop-Vorgang auftraten. (I952d8)
  • Ein Problem wurde behoben, durch das die Ansicht des Fragments in der Ansichtshierarchie verblieb, wenn es während der onCreate()- oder onViewCreated()-Methoden ersetzt wurde. (I8a7d5)
  • Der Fokus wird jetzt bei der Wiederaufnahme von Fragment-Stammansichten korrekt wiederhergestellt. (Ifc84b)
  • Wenn Pop- und Replace-Vorgänge in derselben Fragmenttransaktion kombiniert werden, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691)

Version 1.3.0-beta02

2. Dezember 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 und androidx.fragment:fragment-testing:1.3.0-beta02 werden losgelassen. 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)

Verhaltensänderungen

  • FragmentContainerViews, die ein Fragment nicht mit dem class- oder android:name-Attribut aufblähen, können jetzt außerhalb einer FragmentActivity verwendet werden. (Id4397, b/172266337)
  • Wenn versucht wird, die maximale Lebensdauer eines Fragments auf DESTROYED festzulegen, wird jetzt eine IllegalArgumentException ausgegeben (Ie7651, b/170765622)
  • Wenn ein FragmentScenario mit dem Status DESTROYED initialisiert wird, wird jetzt eine IllegalArgumentException geworfen (I73590, b/170765622)

Fehlerkorrekturen für den neuen State Manager

  • Ein Problem wurde behoben, durch das die Ansicht nicht ihren Endstatus erreichte, wenn ein Fragmentübergang unterbrochen wurde, bei dem eine Animator oder eine der TRANSIT_FRAGMENT_-Optionen verwendet wurde. (I92426, b/169874632)
  • Ein Problem wurde behoben, das dazu führte, dass Fragmente mit einer ausgehenden Animation nicht ordnungsgemäß gelöscht wurden. (I83d65)
  • Wenn Fragmente verlassen werden, deren Effekte rückgängig gemacht wurden, werden sie jetzt korrekt abgebrochen und mit dem richtigen Eintrittseffekt neu gestartet. (I62226, b/167092035)
  • Ein Problem wurde behoben, bei dem die Anweisung „exit Animator“ einer hide() nicht ausgeführt wurde. (Id7ffe)
  • Fragmente werden jetzt korrekt angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
  • Bei Fragmenten, bei denen die Ansicht, auf die der Fokus gerichtet ist, während einer Animation entfernt wird, wird der Fokus nicht mehr auf die getrennte Ansicht zurückgesetzt, sobald RESUMED erreicht wird (I38c65, b/172925703)

Externer Beitrag

  • FragmentFactory speichert Fragmentklassen jetzt separat für verschiedene ClassLoader-Instanzen im Cache. Viele Grüße 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 werden losgelassen. Version 1.3.0-beta01 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

Verhaltensänderungen

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

Fehlerkorrekturen

  • Bei Fragmenten, die mit dem <fragment>-Tag maximiert werden, wird jetzt richtig gewartet, bis die Ansichten einem Container hinzugefügt wurden, bevor der Status in „STARTED“ (BEGONNEN) geändert wird (I02f4c)
  • Für Fragmente, die sichtbar sind und dann setMaxLifecycle() bis CREATED werden die Ausstiegseffekte jetzt richtig ausgeführt. (b/165822335)
  • Das Entfernen eines losgelösten Fragments, das nicht zum Backstack hinzugefügt wird, führt nicht mehr zu einem Speicherleck. Mit freundlicher Genehmigung von Nicklas Ansman Giertz (b/166489383)
  • Aktive Fragmente haben jetzt immer einen nicht nullwertigen Wert für FragmentManager und Fragmente mit einem nicht nullwertigen Wert für 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)

Fehlerkorrekturen für den neuen State Manager

  • Der Fokusstatus der Ansicht wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
  • Bei Fragmenten, die nur einen gemeinsamen Elementübergang haben, werden die Spezialeffekte jetzt richtig abgeschlossen, d. h., sie wechseln tatsächlich in ihren Endzustand (Iaebc7, b/166658128)
  • Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie gelöscht werden. (Id5876)
  • Der neue Statusmanager entfernt jetzt konsequent die Ansicht des austretenden Fragments, bevor die Ansicht des eintretenden Fragments hinzugefügt wird. (I41a6e)
  • Der neue Statusmanager berücksichtigt jetzt explizite Änderungen an der Sichtbarkeit einer Fragmentansicht. Wenn Sie also die Ansicht eines eingehenden Fragments vor Beginn der Animation auf INVISIBLE festlegen, bleibt es unsichtbar. (b/164481490)
  • Bei Fragmenten hat Animators jetzt Vorrang vor Animations. Das bedeutet, dass in einem Fragment mit beiden nur Animator ausgeführt und Animation ignoriert wird. (b/167579557)
  • Der neue Statusmanager sorgt nicht mehr dafür, dass Fragmente bei Verwendung von Eintrittsanimationen flackern. (b/163084315)

Bekanntes Problem

Wenn du bei Verwendung des neuen Statusmanagers während der Eingabe eines Spezialeffekts die Schaltfläche „Zurück“ drückst, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt. Das führt zu einem leeren 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 werden losgelassen. Version 1.3.0-alpha08 enthält diese Commits.

New State Manager

Diese Version enthält eine umfassende Refaktorisierung der internen Statusverwaltung von FragmentManager, die sich auf die Ausführung von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung verschobener 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) lässt sich steuern, ob der FragmentManager den neuen Statusmanager verwendet. (I7b6ee)

Die folgenden Probleme werden nur durch die Verwendung des neuen Statusmanagers behoben:

  • Das vorherige Fragment eines replace-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580)
  • Mithilfe von Fragmenten wird jetzt verhindert, dass mehrere konkurrierende Animationen auf denselben Fragmenten ausgeführt werden. So wird verhindert, dass eine Animation alle Transition-Effekte überschreibt oder eine Animator und eine Transition auf einem einzelnen Fragment gleichzeitig ausgeführt werden. (b/149569323)
  • Jetzt werden enterTransition und exitTranstion für alle ein- und ausgehenden Fragmente ausgeführt, nicht nur für das letzte ein- und das erste ausgehende Fragment. (b/149344150)
  • Verschobene Fragmente bleiben nicht mehr im Status CREATED hängen, sondern wechseln zusammen mit anderen Fragmenten zu STARTED. (b/129035555)
  • Ein Problem wurde behoben, bei dem FragmentManager Vorgänge in der falschen Reihenfolge ausführte, wenn eine verschobene, neu sortierte Transaktion mit einer nicht neu sortierten Transaktion kombiniert wurde. (b/147297731)
  • Wenn mehrere Fragmente gleichzeitig eingeblendet werden, werden beim Aufschieben von Fragmenten keine Zwischenfragmente mehr vorübergehend angezeigt. (b/37140383)
  • FragmentManager gibt jetzt die richtigen Fragmente zurück, wenn findFragmentById() oder findFragmentByTag() innerhalb des onAttachFragment()-Callbacks aufgerufen wird. (b/153082833)
  • Fragmente rufen onCreateView() nicht mehr bei Fragmenten auf, die zerstört werden, wenn das Fragment, das sie ersetzt, verschoben wird. (b/143915710)
  • In der Fehlermeldung beim Versuch, Framework-Transition- und AndroidX-Transition-Instanzen zu kombinieren, wird jetzt das Fragment mit der ungültigen Überleitung erwähnt. (b/155574969)

Verhaltensänderungen

  • Sie können jetzt launch() 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 darauf hinweist, dass dies nicht zulässig ist. Nach einer Konfigurationsänderung werden keine Ergebnisse mehr ausgegeben. (b/162255449)
  • FragmentActivity verwendet jetzt die OnContextAvailableListener API, die in Aktivität 1.2.0-alpha08 eingeführt wurde, um den Status der FragmentManager wiederherzustellen. Alle Listener, die Unterklassen von FragmentActivity hinzugefügt werden, werden nach diesem Listener ausgeführt. (I513da)

Fehlerkorrekturen

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

Bekanntes Problem

  • Wenn Sie den neuen Statusmanager verwenden und die Sichtbarkeit der Stammansicht des Fragments direkt nach onViewCreated() und vor onResume() festlegen, wird die von Ihnen festgelegte Sichtbarkeit von FragmentManager überschrieben, da dieser die Sichtbarkeit der Stammansicht steuert. Als Behelfslösung sollten Sie immer die Vorgänge hide() und show() verwenden, um die Sichtbarkeit Ihres 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 werden losgelassen. Version 1.3.0-alpha07 enthält diese Commits.

Neue Funktionen

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

Verhaltensänderungen

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

Fehlerkorrekturen

  • Bei Fragmenten wird jetzt gewartet, bis die Ansicht des Fragments angehängt wurde, bevor ViewCompat.requestApplyInsets() aufgerufen wird. So wird verhindert, dass die Einbettungsanfrage verworfen wird. (b/158095749)
  • Durch den Aufruf von clearFragmentResultListener wird der Lebenszyklus-Beobachter jetzt ordnungsgemäß gelöscht. (b/159274993)

Version 1.3.0-alpha06

10. Juni 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 und androidx.fragment:fragment-testing:1.3.0-alpha06 werden losgelassen. Version 1.3.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Es wurde eine neue FragmentOnAttachListener hinzugefügt, die eine flexiblere Alternative bietet. Sie ermöglicht die Delegierung von onAttachFragment() an separate, testbare Listener und unterstützt das Hinzufügen eines Listeners zu FragmentManagers, die nicht direkt untergeordnet sind. (I06d3d)

Fehlerkorrekturen

  • Der Ansichtsstatus von übergeordneten Fragmenten wird jetzt vor dem von untergeordneten Fragmenten wiederhergestellt. Dadurch wird ein Problem mit der visuellen Reihenfolge nach einer Konfigurationsänderung behoben, bei dem ein DialogFragment ein anderes DialogFragment als untergeordnetes Fragment anzeigt. (b/157195715)
  • Ein Problem wurde behoben, bei dem die UseRequireInsteadOfGet-Lint-Prüfung die verkettete Verwendung der Operatoren ?. und !! nicht richtig verarbeitete. (b/157677616)

Version 1.3.0-alpha05

20. Mai 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 und androidx.fragment:fragment-testing:1.3.0-alpha05 werden losgelassen. Version 1.3.0-alpha05 enthält diese Commits.

Neue Funktionen

API-Änderungen

  • Die setFragmentResult()- und setFragmentResultListener()-APIs akzeptieren jetzt jeweils einen nicht nullwertigen Bundle und FragmentResultListener. Wenn Sie ein zuvor festgelegtes Ergebnis oder einen zuvor festgelegten Listener explizit löschen möchten, verwenden Sie die neuen Methoden clearFragmentResult() und clearFragmentResultListener(). (b/155416778)
  • Die setFragmentResultListener() Kotlin-Erweiterungen, die ein Lambda annehmen, sind jetzt als inline gekennzeichnet. (b/155323404)

Verhaltensänderungen

  • Für die zuvor eingestellten startActivityForResult()-, startIntentSenderForResult()- und requestPermissions-Versionen von Fragment wird jetzt intern ActivityResultRegistry verwendet. Damit entfällt die Einschränkung, dass bei der Verwendung dieser APIs nur die niedrigeren 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 bei Verwendung des Standardwerts FragmentFactory vom 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 werden losgelassen. Version 1.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Am FragmentManager wurde die Unterstützung für die Weitergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs hinzugefügt. Das funktioniert für hierarchische Fragmente (übergeordnetes/untergeordnetes Fragment), DialogFragmente und Fragmente in der Navigation. So wird sichergestellt, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es mindestens STARTED ist. (b/149787344)

API-Änderungen

  • Die Zielfragment-APIs wurden eingestellt. Zum Übergeben von Daten zwischen Fragmenten sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
  • Die APIs startActivityForResult()/onActivityResult() und requestPermissions()/onRequestPermissionsResult() auf Fragment wurden eingestellt. Verwenden Sie die APIs für Aktivitätsergebnisse. (aosp/1290887)
  • Funktionsgefährdende Änderung bei Aktivität 1.2.0-alpha04: Die Methode prepareCall() wurde in registerForActivityResult() umbenannt. (aosp/1278717)

Fehlerkorrekturen

  • Die getViewLifecycleOwner() des Fragments wird jetzt beendet, bevor onSaveInstanceState() aufgerufen wird, was dem Verhalten des Lebenszyklus des Fragments entspricht. (b/154645875)
  • Wenn setMenuVisibility(false) auf ein Fragment angewendet wird, wird jetzt die Sichtbarkeit der Menüs korrekt geändert, die von den untergeordneten Fragmenten bereitgestellt werden. (b/153593580)
  • Ein illegalStateException wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einer DialogFragment mit FragmentContainerView aufgetreten ist. (b/154366601)
  • Die getDefaultViewModelProviderFactory()-Methode 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 werden losgelassen. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die prepareCall-Methoden auf Fragment sind jetzt final. (b/152439361)

Fehlerkorrekturen

  • Ein Regressionsfehler bei der Verwendung von BottomSheetDialogFragment im Fragment 1.3.0-alpha02 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 gemeinsame Elemente und Ausstiegsü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 von beibehaltenen Fragmenten zu ermöglichen. (b/151605338)
  • Fragment 1.2.4: Die FragmentLiveDataObserve-Lint-Regel für DialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht immer synchron sind. Beim Aufrufen von observe kann also entweder this oder viewLifecycleOwner verwendet werden. (b/151765086)

Änderungen an Abhängigkeiten

  • Fragmente sind von Aktivität 1.2.0-alpha03 abhängig, bei der die Activity Result API, die in Aktivität 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 werden losgelassen. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Unterstützung für die ActivityResultRegistry API hinzugefügt, die in Aktivität 1.2.0-alpha02 eingeführt wurde, um die Aufrufabfolgen startActivityForResult()+onActivityResult() und requestPermissions()+onRequestPermissionsResult() zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem gibt es jetzt Hooks zum Testen dieser Aufrufabfolgen. Weitere Informationen finden Sie im aktualisierten Hilfeartikel Ergebnis aus einer Aktivität abrufen. (b/125158199)

API-Änderungen

  • DialogFragment bietet jetzt einen Konstruktor, der ein @LayoutRes annimmt, das das Layout angibt, das onCreateView() standardmäßig aufblähen soll. (b/150327080)
  • Die Methode onActivityCreated() ist jetzt eingestellt. Code, der sich auf die Ansicht des Fragments bezieht, sollte in onViewCreated() platziert werden, der direkt vor onActivityCreated() aufgerufen wird. Anderer Initialisierungscode sollte in onCreate() platziert werden. 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() zu einem StackOverflowError führte. (b/117894767, aosp/1258664)
  • Fragment 1.2.3: Der Umfang der ProGuard-Regeln für Fragmente wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Fragment 1.2.3: Es wurden Falschmeldungen in der UseRequireInsteadOfGet-Lint-Prüfung behoben, wenn ein lokaler Variablenname den Namen der Kotlin-Eigenschaft überschattet hat. (b/149891163)
  • Ab Fragment 1.2.3: FragmentContainerView löst nicht mehr eine UnsupportedOperationException aus, wenn in der Layoutvorschau der falsche Konstruktor verwendet wird. (b/149707833)

Bekannte Probleme

  • BottomSheetDialogFragment platziert 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 werden losgelassen. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Die Methode setRetainInstance() für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Speichern des Status, die mit Aktivitäten, Fragmenten und Navigationsgrafiken verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den zu behaltenden Status getrennt halten. Dadurch wird eine häufige Ursache für Lecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor der ViewModel und der onCleared()-Callback, den sie 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 eingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren. (b/145132715)

Fehlerkorrekturen

  • Mit den ProGuard-Regeln für Fragmente werden jetzt nur die Standardkonstruktoren der Fragment-Klassen beibehalten, die verwendet werden, anstatt für alle Fragment-Instanzen. Dadurch wird eine Regression behoben, die mit Fragment 1.2.1 eingeführt wurde. (b/149665169
  • Die require___()-Lint-Regeln, die in Fragment 1.2.2 hinzugefügt wurden, lösen bei lokalen Variablen, die denselben Namen wie die schattigen Kotlin-Property-Namen haben, keine Falschmeldungen mehr aus (d.h. view). (b/149891163)
  • FragmentContainerView löst bei Verwendung der Layoutvorschau in Android Studio keine UnsupportedOperationException mehr aus. (b/149707833)
  • Ein Problem wurde behoben, durch das beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung wieder gelöscht wurden. (b/145832397)

Version 1.2.5

Version 1.2.5

10. Juni 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 und androidx.fragment:fragment-testing:1.2.5 werden losgelassen. Version 1.2.5 enthält diese Commits.

Fehlerkorrekturen

  • Die getViewLifecycleOwner() des Fragments wird jetzt beendet, bevor onSaveInstanceState() aufgerufen wird, was dem Verhalten des Lebenszyklus des Fragments entspricht. Diese Funktion wurde bereits in Fragment 1.3.0-alpha04 veröffentlicht. (b/154645875)
  • Wenn setMenuVisibility(false) auf ein Fragment angewendet wird, wird jetzt die Sichtbarkeit der Menüs korrekt geändert, die von den untergeordneten Fragmenten bereitgestellt werden. Diese Funktion wurde bereits in Fragment 1.3.0-alpha04 veröffentlicht. (b/153593580)

Version 1.2.4

Version 1.2.4

1. April 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 und androidx.fragment:fragment-testing:1.2.4 werden losgelassen. Version 1.2.4 enthält diese Commits.

Fehlerkorrekturen

  • Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung von beibehaltenen Fragmenten zu ermöglichen. (b/151605338)
  • Die FragmentLiveDataObserve-Lint-Regel für DialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht 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 werden losgelassen. Version 1.2.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in DialogFragment wurde behoben, der beim Aufrufen von getLayoutInflater() aus onCreateDialog() zu einer StackOverflowError geführt hat. (b/117894767, aosp/1258665)
  • Der Umfang der ProGuard-Regeln für Fragmente wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Falsch positive Ergebnisse in der UseRequireInsteadOfGet-Lint-Prüfung wurden behoben, wenn ein lokaler Variablenname den Namen der Kotlin-Eigenschaft überschattet hat. (b/149891163)
  • FragmentContainerView löst nicht mehr eine UnsupportedOperationException aus, wenn in der Layoutvorschau der falsche Konstruktor verwendet wird. (b/149707833)

Version 1.2.2

Version 1.2.2

19. Februar 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 und androidx.fragment:fragment-testing:1.2.2 werden losgelassen. 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 eine neue Lint-Prüfung hinzugefügt, die bestätigt, dass Sie bei Verwendung des fragment-testing-Artefakts die richtige debugImplementation verwenden. (b/141500106)
  • Für alle Fragment-APIs, die sowohl ein get- als auch ein require-Äquivalent enthalten, wird jetzt empfohlen, die zugehörigen require___()-Methoden zu verwenden, um aussagekräftigere Fehlermeldungen zu erhalten, anstatt checkNotNull(get___()), requireNonNull(get___()) oder get___()!!. (aosp/1202883)

Fehlerkorrekturen

  • Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981)
  • Die vorhandene Lint-Prüfung wurde verbessert. Bei Verwendung von observe wird jetzt auch die livedata-ktx-Erweiterungsmethode von observe berücksichtigt.viewLifecycleOwner (b/148996309)
  • Die Formatierung vieler 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 werden losgelassen. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Der Standardkonstruktor von Fragmenten, die über die Methoden add und replace hinzugefügt wurden und eine Class-Instanz (oder die reifierten Kotlin-Versionen) annehmen, wird jetzt von ProGuard beibehalten. (b/148181315)
  • FragmentStatePagerAdapter und FragmentPagerAdapter fangen keine Ausnahmen mehr ab, die von FragmentManager beim Ausführen von finishUpdate() ausgelöst werden. (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 <fragment>-Tag aufgebläht werden, wird im Layout jetzt immer zuerst onInflate() und dann onCreate() aufgerufen. (aosp/1215856)
  • Wenn toString() auf einer FragmentManager-Instanz aufgerufen wird, wird keine NullPointerException mehr geworfen, 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 werden losgelassen. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • FragmentContainerView: FragmentContainerView ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente und ersetzt die Verwendung von FrameLayout oder anderen Layouts. Es unterstützt dieselben class-, android:name- und optionalen android:tag-Flags wie das <fragment>-Tag. Dieses anfängliche Fragment wird jedoch mit einem normalen FragmentTransaction hinzugefügt, anstatt mit dem von <fragment> verwendeten benutzerdefinierten Codepfad.
  • onDestroyView()-Timing: Fragmente warten jetzt, bis die Ausstiegsanimationen, Framework-Übergänge und AndroidX-Übergänge (bei Verwendung von Transition 1.3.0) abgeschlossen sind, bevor onDestroyView() aufgerufen wird.
  • Klassenbasierte add() und replace(): Es wurden neue Überladungen von add() und replace() für FragmentTransaction hinzugefügt, die eine Class<? extends Fragment> und optional eine Bundle von Argumenten annehmen. Bei diesen Methoden wird mithilfe von FragmentFactory eine Instanz des hinzuzufügenden Fragments erstellt. Kotlin-Erweiterungen, die reified Typen verwenden (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)), wurden ebenfalls zu fragment-ktx hinzugefügt.
  • Integration von Lifecycle ViewModel SavedState: SavedStateViewModelFactory ist jetzt die Standard-Factory, die bei Verwendung von by viewModels(), by activityViewModels(), dem 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() wird eingestellt: Die Methoden getFragmentManager() und requireFragmentManager() für Fragmente wurden eingestellt und durch eine einzelne Methode getParentFragmentManager() ersetzt, die den nicht nullwertigen FragmentManager zurückgibt, dem das Fragment hinzugefügt wird. Mit isAdded() können Sie prüfen, ob ein Aufruf sicher ist.
  • Einstellung von FragmentManager.enableDebugLogging(): 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 class- oder android:name-Attribut in einem FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Beibehaltungsregel hinzufügen. (b/142601969)
  • Wenn du ein NavHostFragment mit class oder android:name in XML mit FragmentContainerView hinzufügst, kannst du in onCreate() deiner Aktivität kein findNavController() 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 werden losgelassen. Version 1.2.0-rc05 enthält diese Commits.

Fehlerkorrekturen

  • Eine Regression im Fragment 1.2.0-rc04 bei Verwendung des <fragment>-Tags wurde behoben, die dazu führte, dass onViewCreated() beim Löschen von Aktivitäten fälschlicherweise aufgerufen wurde. (b/146290333)
  • Bei Fragmenten, die mit dem <fragment>-Tag hinzugefügt wurden, wird die Nichtkonfiguration jetzt richtig gelöscht, auch wenn sie nur manchmal im Layout enthalten sind (z.B. nur im Querformat). Daher werden diese Fragmente jetzt korrekt zu CREATED verschoben, auch wenn sie sich nicht in Ihrem Layout befinden, anstatt sie zu instanziieren, aber nie durch Lebenszyklusmethoden zu bewegen. (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 werden losgelassen. 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 werden losgelassen. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Eine unbeabsichtigte Verhaltensänderung wurde behoben, durch die entfernte Fragmente von findFragmentById() / findFragmentByTag() zurückgegeben wurden, während ihre Ausstiegsanimationen/Übergänge ausgeführt wurden. (b/143982969, aosp/1167585)
  • Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Fragmenten beendet, wenn die enthaltene Aktivität onSaveInstanceState() aufruft. (b/144380645)
  • Ein Problem wurde behoben, durch das Ansichten nach dem Pop-out eines ausgeblendeten Fragments fälschlicherweise als INVISIBLE gekennzeichnet wurden. (b/70793925)
  • Bei Übergängen für freigegebene Fragmentelemente werden jetzt auch Ansichten berücksichtigt, 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 die Einstellung einer FragmentFactory auch Auswirkungen auf untergeordnete FragmentManager hat. (aosp/1170095)

Änderungen an Abhängigkeiten

  • Fragmente hängen 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 werden losgelassen. Version 1.2.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • In Kotlin wird für die Lint-Korrektur, bei der getViewLifecycleOwner() verwendet wird, um LiveData von onCreateView(), onViewCreated() oder onActivityCreated() aus zu beobachten (in Fragment 1.2.0-rc01 eingeführt), jetzt die Kotlin-Syntax für den Zugriff auf Eigenschaften (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 werden losgelassen. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt jetzt zusätzlich zu android:name das Attribut class, was der Funktionalität des <fragment>-Tags entspricht. (b/142722242)
  • Es wurde eine neue Lint-Prüfung hinzugefügt, die dafür sorgt, dass Sie getViewLifecycleOwner() verwenden, wenn Sie LiveData von onCreateView(), onViewCreated() oder onActivityCreated() aus beobachten. (b/137122478)

Fehlerkorrekturen

  • Die onDismiss- und onCancel-Callbacks auf DialogFragment sorgen jetzt dafür, dass der übergebene DialogInterface nicht null ist und dass getDialog() bei der Ausführung nicht null zurückgibt. (b/141974033)
  • FragmentContainerView fügt jetzt das von class oder android:name definierte Fragment im Rahmen der Inflatierung hinzu, damit findFragmentById() und findFragmentByTag() sofort 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 FragmentContainerView-Klasse verschleiert ist. (b/142657034)

Bekannte Probleme

  • Fragmente, auf die nur über das class- oder android:name-Attribut in einem FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Beibehaltungsregel hinzufügen. Wir haben die Lint-Regel deaktiviert, die einen Wechsel zu FragmentContainerView vorschlägt, 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 werden losgelassen. Version 1.2.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das die onInflate() des Fragments keine richtigen Attribute von FragmentContainerView erhielt, was zu Fehlern bei 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 werden losgelassen. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt 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 für FragmentContainerView ein normales FragmentTransaction verwendet, um das erste Fragment hinzuzufügen. Dadurch sind weitere FragmentTransaction-Vorgänge auf das FragmentContainerView möglich und die Verwendung von View-Binding für das Layout. (b/139830628, b/141177981)
  • In Fragmenten wird jetzt eine Lint-Warnung angezeigt, die eine schnelle Lösung zum Ersetzen von <fragment> durch FragmentContainerView anbietet. (b/139830056)

Fehlerkorrekturen

  • Ein Problem mit ClassCastException bei Verwendung von androidx.transition wurde behoben. (b/140680619)
  • Wenn Übergang 1.3.0-beta01 verwendet wird, warten Fragmente jetzt nicht nur auf Framework-Übergänge und ‑Animationen, die in Fragment 1.2.0-alpha03 und Fragment 1.2.0-alpha02 behoben wurden, sondern auch auf androidx.transition-Übergänge, bevor onDestroyView() gesendet wird. (aosp/1119841)
  • Wenn du Übergang 1.3.0-beta01 verwendest, werden androidx.transition-Übergänge jetzt korrekt abgebrochen, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841)
  • Ein Problem bei API 17 und niedriger wurde behoben, bei dem bei Verwendung von FragmentContainerView Übergänge von androidx.transition in der Stammansicht des Fragments nicht funktionierten. (b/140361893)
  • Das fragment-testing-Artefakt hängt jetzt von AndroidX Test 1.2.0 ab, wodurch eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben wird. (b/139100149)
  • Die Verwendung von Log.w im FragmentManager wurde entfernt. (aosp/1126468)

Bekannte Probleme

  • Die onInflate() des Fragments erhalten keine richtigen Attribute von FragmentContainerView, was zu Fehlern 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 werden losgelassen. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Methoden getFragmentManager() und requireFragmentManager() von Fragment wurden eingestellt und durch eine einzelne getParentFragmentManager()-Methode ersetzt, die den nicht nullwertigen FragmentManager zurückgibt, dem das Fragment hinzugefügt wird. Mit isAdded() können Sie prüfen, ob ein Aufruf sicher ist. (b/140574496)
  • Die statische Methode FragmentManager.enableDebugLogging wurde eingestellt. FragmentManager berücksichtigt jetzt Log.isLoggable() für das Tag FragmentManager. So können Sie entweder die DEBUG- oder die VERBOSE-Protokollierung aktivieren, ohne Ihre App neu zu kompilieren. (aosp/1116591)

Fehlerkorrekturen

  • Fragmente werden jetzt ordnungsgemäß zerstört, während Ausstiegsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
  • Ein Problem wurde behoben, durch das Fragmente Activity.findViewById() aufriefen, wo dies 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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

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

Fehlerkorrekturen

  • FragmentContainerView kehrt jetzt die Zeichnungsreihenfolge korrekt um, wenn Fragmente aus dem Rückstapel entfernt werden. (b/139104187)
  • Ein Problem wurde behoben, durch das die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment eingeblendet und ein neues Fragment hinzugefügt wurde. (b/111659726)
  • In Fragmenten wird jetzt nicht nur auf Animationen gewartet, bevor onDestroyView() gesendet wird, sondern auch auf Übergänge (was in Fragment 1.2.0-alpha02 behoben wurde). (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 freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • SavedStateViewModelFactory ist jetzt die Standard-Fabrik, die bei Verwendung von by viewModels(), by activityViewModels(), dem ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einer Fragment verwendet wird. (b/135716331)
  • Die Standardanimationen bei Verwendung von TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE mit setTransition auf einem FragmentTransaction wurden aktualisiert, damit sie den Animationen entsprechen, die für 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 Fenster-Insets behoben werden, die an Fragmente gesendet werden. (b/37036000, aosp/985243, b/136494650)
  • Es wurde eine statische FragmentManager.findFragment(View)-Methode hinzugefügt, um das enthaltene Fragment aus einer Ansicht abzurufen, die durch ein Fragment aufgebläht wurde. In fragment-ktx ist auch eine Kotlin-Erweiterung verfügbar. (aosp/1090757)
  • Es wurden neue Überladungen von add() und replace() für FragmentTransaction hinzugefügt, die einen Class<? extends Fragment> und optional eine Bundle von Argumenten annehmen. Bei diesen Methoden wird mithilfe von FragmentFactory eine Instanz des hinzuzufügenden Fragments erstellt. Kotlin-Erweiterungen, die reified Typen verwenden (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)), wurden ebenfalls zu fragment-ktx hinzugefügt. (b/126124987)
  • @MainThread-Anmerkungen wurden den Fragment-Lebenszyklus-Callbacks hinzugefügt. (b/127272564)
  • Die APIs für Breadcrumb-Titel auf FragmentTransaction und FragmentManager.BackStackEntry wurden eingestellt. (b/138252944)
  • Die Methode setTransitionStyle auf FragmentTransaction wurde eingestellt. (aosp/1011537)
  • Viele der Methoden in FragmentManager sind nicht mehr abstract. FragmentManager selbst bleibt abstract und sollte nicht direkt instanziiert oder erweitert werden. Sie sollten weiterhin nur eine vorhandene Instanz von getSupportFragmentManager(), getChildFragmentManager() usw. abrufen.

Fehlerkorrekturen

  • Fragment 1.1.0-rc04: Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente eingeblendet wurden. (b/138251858)
  • Fragment 1.1.0-rc03: Es wurde ein Problem behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wenn postponeEnterTransition() mehrmals mit einer Zeitüberschreitung aufgerufen wurde. (b/137797118)
  • Fragment 1.1.0-rc02: Ein Absturz in FragmentPagerAdapter und FragmentStatePagerAdapter beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
  • Fragmente warten jetzt, bis Animationen abgeschlossen sind, bevor onDestroyView() gesendet wird. (b/136110528)
  • Fragmentanimationen von untergeordneten Fragmenten und deren Nachkommen werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
  • Ein Problem wurde behoben, bei dem bei der Verwendung von Übergängen für gemeinsame Elemente ein Pop- und ein Hinzufügungsvorgang kombiniert wurden.NullPointerException (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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Der FragmentManager ruft requestApplyInsets() jetzt nach dem Anhängen der Ansicht des Fragments und direkt vor dem Aufrufen von onViewCreated() auf, damit Ihre Ansicht immer die richtigen Einzüge hat. (b/135945162)

Fehlerkorrekturen

  • Ein Fehler beim Pop-up einer FragmentTransaction, bei dem setPrimaryNavigationFragment() vor replace() verwendet wurde, wurde behoben.NullPointerException (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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 1.0.0

  • fragment-testing: Das fragment-testing-Artefakt enthält eine FragmentScenario-Klasse, mit der ein Fragment isoliert getestet werden kann. Weitere Informationen finden Sie in der Dokumentation zum Testen von App-Fragmenten.
  • FragmentFactory: Sie können jetzt eine FragmentFactory auf einer FragmentManager festlegen, um das Erstellen von Fragmentinstanzen zu verwalten. Damit entfällt die strenge Anforderung, einen Konstruktor ohne Argumente zu haben.
  • Kotlin-Property-Delegierte für ViewModels: Das fragment-ktx-Artefakt enthält jetzt zwei Kotlin-Property-Delegierte: by viewModels() für den Zugriff auf ViewModels, die mit dem einzelnen Fragment verknüpft sind, und by activityViewModels() für den Zugriff auf ViewModels, die auf die Aktivität beschränkt sind.
  • Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie setMaxLifecycle() auf FragmentTransaction anwenden. Dies 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 von FragmentActivity aufrufen, der eine R.layout-ID annimmt, die das Layout angibt, das als Inhaltsansicht festgelegt werden soll. Dies ist eine Alternative zum Aufrufen von setContentView() in onCreate(). Dies ändert nichts an der Anforderung, dass Ihre Unterklasse einen Konstruktor ohne Argumente haben muss.
  • Konstruktor „LayoutId“ für Fragmente: Unterklassen von Fragment können jetzt optional einen Konstruktor von Fragment aufrufen, der eine R.layout-ID annimmt, die das Layout angibt, das für dieses Fragment verwendet werden soll, anstatt onCreateView() zu überschreiben. Das maximierte Layout kann in onViewCreated() konfiguriert werden.
  • Mit Zeitüberschreitung verschieben: Es wurde eine neue Überlastung von postponeEnterTransition() hinzugefügt, die eine Zeitüberschreitung hat.

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 freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wenn postponeEnterTransition() mit einer Zeitüberschreitung mehrmals aufgerufen wurde. (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 werden losgelassen. 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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn während des Übergangs show()- oder hide()-Vorgänge verwendet werden. (b/133385058)
  • Ein Fehler beim Pop-up einer FragmentTransaction, bei dem setPrimaryNavigationFragment() vor replace() verwendet wurde, wurde behoben.NullPointerException (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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • androidx.lifecycle.Lifecycle-Callbacks (insbesondere für STARTED, RESUMED, PAUSED, STOPPED und DESTROYED) für verschachtelte Fragmente sind jetzt richtig verschachtelt. (b/133497591)
  • OnBackPressedCallback-Instanzen, die in der onCreate() eines Fragments registriert sind, haben jetzt Vorrang vor dem untergeordneten FragmentManager. (b/133175997)
  • Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
  • Fragment-Animationen und ‑Übergänge werden jetzt bei Verwendung von animateLayoutChanges="true" ignoriert. Dadurch wurde ein Problem behoben, bei dem Fragmente nicht ordnungsgemäß 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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

API-Änderungen

  • Wenn sich das primäre Navigationsfragment ändert, erhalten Fragmente jetzt einen Rückruf an eine neue onPrimaryNavigationFragmentChanged(boolean)-Methode. aosp/960857

Fehlerkorrekturen

  • Menüpunkte, die durch ein untergeordnetes Fragment aufgebläht wurden, werden jetzt richtig 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 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Diese Version ist nicht mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Wenn Sie diese Version von Fragments verwenden, aktualisieren Sie bitte auf „Preferences“ 1.1.0-alpha05.

Neue Funktionen

  • Es wurde eine neue Überladung von postponeEnterTransition() hinzugefügt, die eine Zeitüberschreitung hat, nach der das Fragment automatisch startPostponedEnterTransition() aufruft. b/120803208

API-Änderungen

  • Wichtige Änderung: Die zuvor verworfene Methode FragmentFactory instantiate, die ein Bundle annahm, 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 und BEHAVIOR_SET_USER_VISIBLE_HINT umbenannt. aosp/954782

Fehlerkorrekturen

  • Fragmente, deren Lebenszyklus über setMaxLifecycle() begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren Endstatus erreicht haben. 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 werden losgelassen. 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() auf FragmentTransaction anwenden. Dies 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)

Verhaltensänderungen

  • Aufgrund von (b/129907905) erhalten Fragmente im Backstack keinen Callback zu onCreateView(), wenn die Hostingaktivität neu erstellt wird. onCreateView() wird jetzt nur aufgerufen, wenn das Fragment sichtbar wird, d.h., wenn der Rückstapel geleert wird.

Fehlerkorrekturen

  • Ein Problem bei der Verwendung eines <fragment>-Tags in XML und des contentLayoutId-Konstruktors von FragmentActivity oder AppCompatActivity wurde behoben. (b/129907905)
  • Ein Problem wurde behoben, durch das Fragmente im Backstack nach einer Konfigurationsänderung nicht auf mindestens CREATED verschoben wurden. Dadurch wurden ViewModels und untergeordnete beibehaltene Fragmente nicht ordnungsgemäß entsorgt. (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)
  • Probleme behoben, bei denen ein OnBackPressedCallback, das mit einem Fragment-Lebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn die FragmentManager einen Backstack hatte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209)
  • In Fragmenten wird LAYER_TYPE_HARDWARE für Animationen nicht mehr erzwungen. Wenn Sie eine spezielle Hardwareebenenanimation benötigen, legen Sie sie als Teil Ihrer Animation fest. (b/129486478)

Version 1.1.0-alpha06

3. April 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 und androidx.fragment:fragment-testing:1.1.0-alpha06 werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Von FragmentManager geworfene Ausnahmen enthalten jetzt den Namen des Fragments in der Meldung. (b/67759402)

API-Änderungen

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

Fehlerkorrekturen

  • Behebung einer Regression in 1.1.0-alpha05, die dazu führte, dass das eingehende Fragment auf dem Bildschirm flackerte. (b/129405432)
  • Ein Problem wurde behoben, durch das das primäre Navigationsfragment nach einer Reihe von Vorgängen vom Typ „popBackStack+replace+popBackStack“ verloren ging. (b/124332597)
  • Ein Problem wurde behoben, das beim Wiederherstellen des Fragmentstatus bei Verwendung von @ContentView-Konstruktoren in Ihrer Aktivität auftrat. (b/127313094)
  • Die Logik von setTargetFragment() wurde korrigiert, wenn ein vorhandenes Zielfragment durch ein Fragment ersetzt wird, das noch nicht mit dem FragmentManager verbunden 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 werden losgelassen. Eine vollständige Liste der Commits in dieser Version finden Sie hier.

Neue Funktionen

  • @ContentView Anmerkungsabfragen werden jetzt im Cache gespeichert (b/123709449)

Geändertes Verhalten

  • Wenn remove(), hide(), show(), detach() und setPrimaryNavigationFragment() mit einem Fragment aufgerufen werden, das an einem anderen FragmentManager angehängt ist, wird jetzt eine IllegalStateException ausgegeben, anstatt dass der Vorgang geräuschlos fehlschlägt (aosp/904301)

Fehlerkorrekturen

  • onNewIntent für FragmentActivity ist jetzt korrekt mit @CallSuper gekennzeichnet (b/124120586)
  • Ein Problem wurde behoben, durch das 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 werden losgelassen.

Neue Funktionen

  • Es wurde Unterstützung für die @ContentView-Klassenannotation hinzugefügt, mit der Sie angeben können, welche Layout-XML-Datei aufgebläht werden soll, anstatt onCreateView() zu überschreiben. Wir empfehlen, sich ähnliche Arbeiten in onViewCreated() anzusehen. (aosp/837619)
  • fragment-testing ist jetzt von androidx.test:core-ktx 1.1.0 Stable (b/121209673) abhängig
  • Sie können jetzt openActionBarOverflowOrOptionsMenu mit FragmentScenario verwenden, um von Fragmenten gehostete Optionsmenüs zu testen (b/121126668)

API-Änderungen

  • Die Methode requireArguments() wurde hinzugefügt, die eine @NonNull Bundle zurückgibt oder eine IllegalStateException wirft (b/121196360)
  • Hinweis hinzugefügt, dass getLifecycle(), getViewLifecycleOwner() und getViewLifecycleOwnerLiveData() nicht überschrieben werden sollten und in einem zukünftigen Release endgültig festgelegt werden. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880714)
  • 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ärkompatibilität mit früheren Releases von Fragments wurde behoben. (aosp/887877) (aosp/889834)

Fehlerkorrekturen

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

Version 1.1.0-alpha03

17. Dezember 2018

Neue Funktionen

  • Fragment implementiert jetzt BundleSavedStateRegistryOwner und ist von der neu veröffentlichten SavedState-Bibliothek abhängig [aosp/824380]
  • Es wurde ein by activityViewModels Kotlin-Property-Delegate hinzugefügt, um ViewModels abzurufen, die mit der enthaltenen Aktivität verknüpft sind [b/119050253]
  • Der by viewModels-Kotlin-Property-Delegate wurde erweitert, um eine optionale Lambdamethode zum Abrufen des ViewModelStoreOwner zu akzeptieren. 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 angeben, z. B. Theme.AppCompat [b/119054431]. Dies ist eine funktionsgefährdende Änderung.
  • Die Methode requireView() wurde hinzugefügt, die eine @NonNull View zurückgibt oder eine IllegalStateException wirft. [b/120241368]
  • Es wurde eine requireParentFragment()-Methode hinzugefügt, die eine @NonNull Fragment zurückgibt oder eine IllegalStateException wirft [b/112103783]

Fehlerkorrekturen

  • Fehler IllegalStateException: Fehler beim Speichern des Status behoben b/120814739
  • Fragmente, die aus dem gespeicherten Instanzstatus wiederhergestellt werden, erhalten jetzt immer einen nicht nullwertigen 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 Fragmenterstellung verwenden, anstatt eine FragmentFactory-Instanz zu übergeben. (aosp/812913)

Fehlerkorrekturen

  • Behoben wurde eine IllegalStateException bei der Verwendung verschachtelter Fragmente im Backstack (b/119256498).
  • Absturz bei Verwendung von FragmentScenario.recreate() mit einem FragmentFactory behoben (aosp/820540)
  • Ein Problem wurde behoben, durch das nach dem Entfernen eines Fragments nicht mehr auf Zielfragmente zugegriffen werden konnte (aosp/807634)

Version 1.1.0-alpha01

5. November 2018

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

Neue Funktionen

  • Neue Klasse „FragmentScenario“ zum Testen von Fragmenten im Alleingang.
  • Sie können jetzt für jeden FragmentManager einen FragmentFactory festlegen, um zu steuern, wie neue Fragmentinstanzen erstellt 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 Annotations zur Nullbarkeit wurden in der Fragment API deutlich erweitert.

Fehlerkorrekturen

  • Behebung eines Problems, das dazu führte, dass Fragmentvorgänge in LiveData fehlschlugen(b/77944637)

Bekannte Probleme

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