Fragment

Segmentieren Sie Ihre App in mehrere unabhängige Bildschirme, die in einer Aktivität gehostet werden.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alphaversion
30. Oktober 2024 1.8.5 - -

Abhängigkeiten deklarieren

Um eine Abhängigkeit von Fragment hinzuzufügen, müssen Sie Ihrem Projekt das Maven-Repository von Google 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:

Groovy

dependencies {
    def fragment_version = "1.8.5"

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

    // 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. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese 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.5

30. Oktober 2024

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

Fehlerkorrekturen

  • Ein IllegalStateException, das von saveBackStack erst ausgelöst wurde, nachdem eine vorausschauende Zurück-Geste abgebrochen oder unterbrochen wurde, wurde behoben. (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)
  • Es wurde ein Problem in Fragmenten behoben, bei dem das Unterbrechen einer Bewegung zur Vervollständigung des Zurücks den Fragmentmanager in einen nicht definierten Zustand versetzt 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 korrekt Fälle, in denen das übergeordnete Fragment im Back-Stack des Fragments abgelegt wird. Dadurch werden Probleme mit der Fehlermeldung „Keine Ansicht für ID“ beim Aufrufen dieses Fragments vermieden. (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 Rückwärtsgeste 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 Artefakt fragment-compose enthält jetzt ein AndroidFragment-Composable, mit dem Fragmente über den Klassennamen des Fragments zur Hierarchie „Compose“ hinzugefügt werden können. Der Status des Fragments wird automatisch gespeichert und wiederhergestellt. Dies sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mithilfe von 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-Schnittstelle wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst und bewegt ihn gemäß dem Timing des onBackStackChangeCommitted-Callbacks näher. (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

  • Fragment 1.7.1: Die Vorhersagefunktion für die Rückwärtslaufzeit 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 andere Ü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 wurde 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. Damit wird der Status des Fragments 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 wurde 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 vorweggenommene Geste zum Zurückgehen

  • 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 anzeigen, indem sie nach deinem Animations-/Übergang suchen, bevor sie sich entscheiden, die Transaktion durch Abschließen der Geste zu speichern oder den Vorgang abzubrechen.
Transition System XML-Ressource Unterstützt den prädiktiven Rücken
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 Ereignisse onBackStackChangeProgressed() und onBackStackChangeCancelled(), um den voraussichtlichen Rücklauffortschritt bzw. abgebrochene Ereignisse zu empfangen.

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, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird eine ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt.

  class ExampleFragment : Fragment() {

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

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

Version 1.7.0-rc02

17. April 2024

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

Fehlerkorrekturen

  • Es wurden Logs hinzugefügt, die angeben, warum das Festlegen einer sharedElement ohne weitere Umstellungen nicht ausgeführt werden kann. (Iec48e)
  • Ein Fehler wurde 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)
  • Es wurde ein Problem in Fragmenten behoben, bei dem das Unterbrechen eingehender Übergänge mit einer vorausschauenden Zurück-Geste dazu zerstörte, in die Ansicht zu gelangen und einen leeren Bildschirm zu hinterlassen. (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ückwärtsnavigationen in 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 Ereignisse onBackStackChangeProgressed() und onBackStackChangeCancelled(), um den voraussichtlichen Rücklauffortschritt bzw. abgebrochene Ereignisse zu empfangen. (214b87)

Bekanntes Problem

  • Wenn die Fragment-Unterstützung für das vorausschauende Zurückgehen für Animator- oder AndroidX-Übergänge verwendet wird, geben Fragmente eine NullPointerException von handleOnBackProgressed aus, wenn noch nie 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 Nichtfestlegen eines „enter/exitTransition“ verursacht wurde. (I8472b)
  • Von Fragment 1.6.2: Wenn das Fragment eines FragmentContainerView aufgebläht ist, kann auf seine Status wie FragmentManager, Host und ID jetzt über den onInflate-Callback zugegriffen werden. (I1e44c, b/307427423)
  • Aus Fragment 1.6.2: Wenn Sie mit clearBackStack eine Reihe von Fragmenten entfernen, werden die ViewModel aller verschachtelten Fragmente jetzt gelöscht, wenn die ViewModels des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)

Version 1.7.0-alpha06

4. Oktober 2023

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

Abhängigkeitsupdate

  • Fragmente wurden aktualisiert und hängen jetzt von der neuen animateToStart API ab, 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

  • Wenn Sie eine „Zurück“-Touch-Geste mit einem Übergang einmal abbrechen, wird der Übergang beim nächsten Start der „Zurück“-Touch-Geste nicht ausgeführt, was zu einem leeren Bildschirm führt. 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 vorweggenommenen 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. Dadurch wurde das erste Fragment im Rückstapel des Fragmentmanagers übersprungen und die Aktivität beendet, 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, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Zurück-Aktion ausgeführt wird. (I8100c)

Version 1.7.0-alpha01

7. Juni 2023

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

Neue Funktionen

  • Fragmente unterstützen jetzt bei der Verwendung von Animator die Vorhersage in der App. So kannst du die Zurück-Touch-Geste verwenden, um das vorherige Fragment mit deinem benutzerdefinierten Animator zu sehen, bevor du dich entscheidest, die Transaktion entweder mit der abgeschlossenen Bewegung zu bestätigen oder abzubrechen. 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 eines 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, durch das 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 Multiple Back Stacks API zum Speichern und Wiederherstellen dieses Fragments verwenden. (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 wurde 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 hat 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 Lebenszyklus 2.6.1 ab.
  • Das Fragment hängt jetzt von SavedState 1.2.1 ab.
  • Das Fragment hängt jetzt von ProfileInstaller 1.3.0 ab.
  • Im fragment-testing-manifest-Artefakt werden die Manifesteinträge vom Rest der Komponenten für den Fragmenttest getrennt. 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 liegende 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 der Laufzeit zu scheitern. (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)

Aktualisierung der Abhängigkeiten

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 im onBackStackChangedListener von FragmentManager wird ausgeführt, bevor Fragmente in ihren Zielstatus verschoben werden. (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 im Backstack der FragmentManager ermöglichen. (Ib7ce5, b/238686802)

API-Änderungen

  • Die APIs Fragment und FragmentManager, die ein Intent oder IntentSender verwenden, sind jetzt korrekt mit @NonNull annotiert, um zu verhindern, dass ein Nullwert als Nullwert übergeben wird, da die entsprechenden Android-Framework-APIs, bei denen diese Methoden aufgerufen werden, immer sofort zum Absturz gebracht würden. (I06fd4)

Version 1.6.0-alpha04

7. Dezember 2022

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

Neue Funktionen

  • FragmentStrictMode hat 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)

Änderungen im Verhalten

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

API-Änderungen

  • Im fragment-testing-manifest-Artefakt werden die Manifesteinträge vom Rest der Komponenten für Fragmenttests getrennt. 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

  • Klassen, die DialogFragment erweitern, müssen jetzt in ihren onDismiss()-Überschreibungen super aufrufen. (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)

Aktualisierung der Abhängigkeit

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

  • Das Problem, bei dem das Entfernen eines Fragments, unabhängig davon, ob es Menüelemente hinzugefügt hat, ungültig wurde, hat das Menü der Aktivität ungültig gemacht. Dieses Problem wurde behoben. (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 wurden veröffentlicht. 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 keine Weiterleitung 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 wurden veröffentlicht. 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 wurden veröffentlicht. 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 einer Bundle, anstatt 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

  • FragmentStrictMode bietet jetzt die Möglichkeit für private Drittanbieter-Fragmente, bestimmte Strafen bei Verstößen zu umgehen, indem allowViolation() mit dem Klassennamen verwendet wird.
  • Die Fragment-APIs zum Bereitstellen eines Menüs für die ActionBar Ihrer Aktivität wurden eingestellt. Die in Aktivität 1.4.0 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste 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 Dialog nicht sofort geschlossen, sondern nur der Status von FragmentManager synchron aktualisiert. (I15c36, b/72644830)

Refactoring des gespeicherten Instanzstatus

  • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einer Bundle, anstatt 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 wurden veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.

API-Änderungen

Version 1.5.0-alpha04

23. März 2022

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

API-Änderungen

  • Die Fragment-APIs zum Bereitstellen eines Menüs für 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 jetzt CreationExtras 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

  • Ab Fragment 1.4.1: FragmentContainerView löst keine ungültige 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 diese 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. Dies verwendet dieselbe Logik wie findFragmentById() mit der ID des FragmentContainerView, ermöglicht aber eine Verkettung des Aufrufs.

    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 State Manager ist jetzt die einzige verfügbare Option.

Mehrere Back Stacks

Der FragmentManager verwaltet einen Backstack aus Fragmenttransaktionen, die addToBackStack() verwendet haben. Auf diese Weise können Sie diese Transaktionen per Pop-up übertragen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

Diese Version erweitert diese Mechanismen um drei neue FragmentManager APIs: 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. Auf diese Weise können Sie effektiv zwischen mehreren Back Stacks hin- und herwechseln, indem Sie den aktuellen Back Stack speichern und einen gespeicherten Back Stack 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, geschieht bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. Alle ViewModel-Instanzen, die diesen Fragmenten zugeordnet sind, bleiben erhalten (und onCleared() wird nicht für sie aufgerufen).

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

  • Jede Fragmenttransaktion muss setReorderingAllowed(true) verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • 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(), die einen zuvor gespeicherten Back Stack wiederherstellen bzw. einen zuvor gespeicherten Back Stack löschen, tun beide nichts, wenn saveBackStack() nicht zuvor mit demselben Namen aufgerufen wurde.

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 senden jetzt onHiddenChanged() in ihrer gesamten Hierarchie ab, bevor ein eigener Callback gestartet wird. (Iedc20, b/77504618)
  • Die Tastatur wird jetzt automatisch geschlossen, wenn von einem Fragment mit geöffneter Tastatur zu einem Fragment mit Recycler-Ansicht gewechselt wird. (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 wurden veröffentlicht. 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 derselben 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 sie etwas bewirken. (aosp/1832956, b/200867930)
  • Der FragmentAddMenuProvider-Lint-Fehler wurde hinzugefügt, um die Verwendung des Fragment-Lebenszyklus im Fragment-Ansichts-Lebenszyklus bei Verwendung der addMenuProvider API von MenuHost zu korrigieren. (aosp/1830457, b/200326272)

Aktualisierungen der Dokumentation

  • Die Nachricht zur Einstellung von APIs, die jetzt von den Activity Result APIs (startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions und onRequestPermissionsResult) verarbeitet werden, wurde um weitere Details erweitert. (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 Lint-Prüfung für UseGetLayoutInflater wurde zur Bearbeitung zusätzlicher Grenzfälle verbessert. (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 wurden 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. (ID 212)
  • 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)

Aktualisierung der Abhängigkeit

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 eine FragmentTransaction ausgeführt wurde, für die replace() verwendet wurde. (I73137)
  • Ein NullPointerException wurde behoben, 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 hat 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, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55)
    • FragmentReuseViolation enthält jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)
    • SetUserVisibleHintViolation enthält jetzt eine ausführlichere Fehlermeldung, die enthält, auf welchen Wert der für Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)

Änderungen im Verhalten

  • 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 wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • FragmentStrictMode protokolliert jetzt immer Verstöße, wenn das Logging über die FragmentManager aktiviert ist, unabhängig von der 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 die ViewGroup, der die Fragment hinzugefügt werden wollte. (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ß verursacht hat. (I0544d, b/187871150)
    • RetainInstanceUsageViolation ist jetzt abstrakt und hat zwei Unterklassen, SetRetainInstanceUsageViolation und GetRetainInstanceUsageViolation, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)

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 eine getFragment()-Methode, die das Fragment zurückgibt, das zuletzt dem Container 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
    
  • 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. (I46652)

Mehrere Rückstapel

FragmentManager verwaltet einen Back-Stack aus Fragmenttransaktionen, für die addToBackStack() verwendet wurde. Auf diese Weise können Sie diese Transaktionen per Pop-up übertragen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.

In dieser Version werden diese Mechanismen um zwei neue FragmentManager APIs erweitert: saveBackStack(String name) und restoreBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status jedes Fragments, das in diesen Transaktionen hinzugefügt wurde, zu speichern. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Zustand intakt 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() insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („per-pgezogen“) und alle hinzugefügten Fragmente gelöscht und entfernt werden. Sie 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, geschieht bei saveBackStack() nichts, wenn Sie zuvor keine Fragmenttransaktion mit addToBackStack() mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. Alle ViewModel-Instanzen, die diesen Fragmenten zugeordnet sind, bleiben erhalten (und onCleared() wird nicht für sie aufgerufen).

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

  • Jede Fragmenttransaktion muss setReorderingAllowed(true) verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können.
  • 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 beibehaltenes Fragment sein oder in seinem transitiven Satz untergeordneter Fragmente ein beibehaltenes Fragment enthalten. So wird sichergestellt, dass FragmentManager nach dem Speichern des Back Stacks 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 diese 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 Sie einem Container ein Fragment hinzufügen, das kein FragmentContainerView ist. Sie sollten immer FragmentContainerView als Container für Fragmente in Ihrem Layout verwenden. (Nr. 146, b/181137036)
  • detectRetainInstanceUsage() erkennt, wenn Sie die verworfenen setRetainInstance()- oder getRetainInstance()-APIs verwenden. (#140, b/153737954)
  • detectSetUserVisibleHint() erkennt, wenn Sie die verworfene setUserVisibleHint() API verwenden. (Nr. 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 das von Ihrem Fragment bereitgestellte ViewModelProvider.Factory korrekt verwendet, wenn getDefaultViewModelProviderFactory() überschrieben wird (wie bei @AndroidEntryPoint-annotierten Fragmenten, wenn Hilt verwendet wird). Wenn Sie diese Methode nicht überschreiben, wird als Standard-Factory eine SavedStateViewModelFactory erstellt, die ihren 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-Instanz jetzt nach dem Absturz des Prozesses 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 wurden veröffentlicht. 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 richtig 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

  • Eine Regression bei Übergängen von gemeinsam genutzten Elementen, die in Fragment 1.3.4 von aosp/1679887 eingeführt wurde, wurde behoben. 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

  • Wir haben 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 jedem Fragment ein neuer Satz von WindowInsets gesendet wird. Dadurch wird sichergestellt, dass jedes Fragment die Einfügungen jetzt unabhängig nutzen kann. (I63f68, b/172153900)
  • DialogFragment verarbeitet jetzt korrekt Fälle, in denen ein untergeordnetes Fragment einem Container hinzugefügt wird, der dieselbe ID wie ein Container in Ihrer benutzerdefinierten Dialog-Klasse hat. Dadurch werden Probleme in der Ansichtshierarchie behoben, wenn IDs wiederverwendet werden, die intern von Dialogfeldern wie BottomSheetDialog verwendet werden. (Ie6279, b/180021387)
  • FragmentManager.dump() rückt das erste Fragment in der Liste der aktiven Fragmente jetzt ordnungsgemäß ein. (If5c33, b/183705451)

Fehlerkorrekturen für den neuen State Manager

  • Der neue Fragment State Manager verarbeitet jetzt Exit-Übergänge mit Ausblendungsvorgä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 wurden veröffentlicht. Version 1.3.2 enthält diese Commits.

Neue Fehlerkorrekturen im 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 für ein freigegebenes Element wird der Name der Überblendung für Ansichten in einer Hierarchie mit 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 wurden veröffentlicht. 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 mit 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 vorhanden (I54705, b/177761088)
  • Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß die Basismethode javaDoc (I736ce, b/139548782).
  • Die Parameterdokumentation in den Dokumenten für setFragmentResult und setFragmentResultListener wurde dahingehend aktualisiert, dass keine Nullables mehr akzeptiert werden (I990ba, b/178348386).

Fehlerkorrekturen für den neuen State Manager

  • Ein Speicherleck in Fragmenten wurde behoben, das durch mFocusedView verursacht wurde (Ib4e9e, b/179925887).
  • Fragmente rufen jetzt ordnungsgemäß onCreateOptionsMenu auf, wenn Transaktionen ein-/ausblenden verwendet werden (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 State Manager: Durch eine erhebliche Neuformulierung der internen Strukturen von FragmentManager wurden zahlreiche Probleme bei der Weiterleitung von Lebenszyklusereignissen, Animationen und Übergängen sowie bei 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 aktualisieren, 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 Element), DialogFragmente und Fragmente in der Navigation. So wird sichergestellt, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es mindestens STARTED ist. Die Zielfragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Weitere Informationen finden Sie unter Ergebnisse mithilfe der Fragment Result API abrufen.

  • FragmentOnAttachListener: 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 die Unterstützung für das Hinzufügen eines Listeners zu anderen FragmentManagern als dem direkten untergeordneten FragmentManager.

  • 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, wodurch ein einheitliches Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt wird.
    • FragmentScenario unterstützt jetzt das Festlegen einer ersten Lifecycle.State, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu einer 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 Lebenszyklus 2.3.0 und SavedState 1.1.0 hinzugefügt wurden, sodass das Fragment als ViewModelStoreOwner und ein SavedStateRegistryOwner und LifecycleOwner zurückgegeben werden, die an den Ansichtslebenszyklus des Fragments gebunden sind, wenn ein View innerhalb eines Fragment verwendet wird.

  • TRANSIT_-Animation – Änderungen: 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 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 von 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 Dialogfragmente werden jetzt immer über einem übergeordneten Dialogfragment 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 bei Verwendung von FragmentContainerView in der richtigen Reihenfolge angezeigt. (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 wurden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

Neue Funktionen

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

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)
  • Beim Initialisieren eines Fragmentszenarios mit dem Status DESTROYED wird jetzt ein IllegalArgumentException ausgelöst (I73590, b/170765622).

Fehlerkorrekturen für den neuen State Manager

  • Ein Problem wurde behoben, bei dem die Ansicht nicht ihren endgültigen Status erreichte, wenn ein Fragmentübergang unterbrochen wurde, bei dem eine Animator- oder eine der TRANSIT_FRAGMENT_-Optionen verwendet wurde. (I92426, b/169874632)
  • Es wurde ein Problem behoben, durch das Fragmente mit einem Exit-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 fortgesetzt. (I62226, b/167092035)
  • Ein Problem wurde behoben, bei dem die Anweisung „exit Animator“ einer hide() nicht ausgeführt wurde. (Id7ffe)
  • Fragmente werden jetzt richtig 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. Vielen Dank, Simon Schiller. (#87, b/113886460)

Version 1.3.0-beta01

1. Oktober 2020

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

Neue Funktionen

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

API-Änderungen

Verhaltensänderungen

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

Fehlerkorrekturen

  • Mit dem <fragment>-Tag aufgeblähte Fragmente warten jetzt richtig, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie in den Status „STARTED“ (BEGONNEN) wechseln (I02f4c)
  • Bei sichtbaren Fragmenten und dann bei setMaxLifecycle() bis CREATED wird der Exit-Effekt jetzt korrekt 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 des Fragments, 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 Übergang mit freigegebenen Elementen 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 Zustandsmanager entfernt nun konsistent die bestehende Fragmentansicht, bevor die neue hinzugefügt wird. (I41a6e)
  • Der neue Statusmanager berücksichtigt jetzt explizite Änderungen an der Sichtbarkeit einer Fragmentansicht. Wenn Sie die Ansicht eines aufrufenden Fragments also vor Beginn der Animation auf INVISIBLE setzen, bleibt sie 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 bei 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 vermischt wurde. (b/147297731)
  • Wenn mehrere Fragmente gleichzeitig angezeigt werden, sind dazwischenliegende Fragmente nicht mehr vorübergehend sichtbar, wenn Fragmente verschoben werden. (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, die Framework-Transition- und AndroidX-Transition-Instanzen zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang angegeben. (b/155574969)

Änderungen im Verhalten

  • Sie können jetzt launch() für eine 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 des Fragments zu ändern. (b/164481490)

Version 1.3.0-alpha07

22. Juli 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 und androidx.fragment:fragment-testing:1.3.0-alpha07 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. Dadurch wird sichergestellt, dass sein Status gespeichert und gleichzeitig mit der Ansicht des Fragments wiederhergestellt wird. (b/158503763)

Fehlerkorrekturen

  • Fragmente warten jetzt, bis die Ansicht des Fragments angehängt wurde, bevor sie ViewCompat.requestApplyInsets() aufrufen. So werden Fälle vermieden, in denen die Inset-Anfrage verworfen wurde. (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 auf 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 die Unterstützung für das Hinzufügen eines Listeners zu FragmentManagers, die nicht direkt untergeordnet sind. (I06d3d)

Fehlerkorrekturen

  • Bei übergeordneten Fragmenten wird jetzt der Ansichtsstatus vor den untergeordneten Fragmenten wiederhergestellt. Dadurch wurde ein Problem mit der visuellen Sortierung nach einer Konfigurationsänderung behoben, wenn ein DialogFragment ein anderes DialogFragment als untergeordnetes Fragment anzeigen würde. (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 APIs setFragmentResult() und setFragmentResultListener() verwenden jetzt Bundle bzw. FragmentResultListener ungleich null. 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 akzeptieren, sind jetzt als inline gekennzeichnet. (b/155323404)

Verhaltensänderungen

  • Die zuvor eingestellten startActivityForResult(), startIntentSenderForResult() und requestPermissions auf Fragment verwenden jetzt intern ActivityResultRegistry. Damit entfällt die Einschränkung, dass bei Verwendung dieser APIs nur die niedrigeren Bits (unter 0xFFFF) für Ihre Anfragecodes verwendet werden. (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 Element), 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 Fragmentergebnis-APIs verwendet werden. (b/149787344)
  • Die APIs startActivityForResult()/onActivityResult() und requestPermissions()/onRequestPermissionsResult() auf Fragment wurden eingestellt. Verwende die Activity Result APIs. (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) für ein Fragment aufgerufen wird, ändert sich die Sichtbarkeit der Menüs, die von seinen untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt. (b/153593580)
  • Ein illegalStateException wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einer DialogFragment mit FragmentContainerView aufgetreten ist. (b/154366601)
  • Die Methode getDefaultViewModelProviderFactory() für Fragmente stürzt nicht mehr ab, wenn Ihre Fragmente außerhalb einer Aktivität gehostet werden. (b/153762914)

Version 1.3.0-alpha03

1. April 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 und androidx.fragment:fragment-testing:1.3.0-alpha03 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 Fragment 1.3.0-alpha02 bei Verwendung von BottomSheetDialogFragment wurde behoben. (b/151652127, aosp/1263328, aosp/1265163)
  • Ein Absturz bei der Verwendung von prepareCall aus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004)
  • Ein Problem wurde behoben, bei dem 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. Damit Sie speziell nach Abschluss der onCreate() der Aktivität einen Rückruf erhalten, sollte eine LifeCycleObserver auf der Lifecycle der Aktivität in onAttach() registriert und entfernt werden, sobald der onCreate()-Callback empfangen wurde. (b/144309266)

Fehlerkorrekturen

  • Von Fragment 1.2.3: Ein Fehler in DialogFragment wurde behoben, der eine StackOverflowError verursachte, wenn getLayoutInflater() aus onCreateDialog() aufgerufen wurde. (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)
  • Von Fragment 1.2.3: Falsch positive Fehler in der Lint-Prüfung UseRequireInsteadOfGet bei Verwendung eines lokalen Variablennamens, der den Kotlin-Attributnamen verdeckt, wurde behoben. (b/149891163)
  • Ab Fragment 1.2.3: FragmentContainerView gibt keine UnsupportedOperationException mehr für die Verwendung des falschen Konstruktors in der Layoutvorschau aus. (b/149707833)

Bekannte Probleme

  • Das Dialogfeld von BottomSheetDialogFragment wird nicht mehr richtig auf dem Bildschirm positioniert. (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

  • Die im Lebenszyklus 2.3.0-alpha01 hinzugefügte Unterstützung für die ViewTreeLifecycleOwner.get(View) API wurde hinzugefügt, sodass sie die viewLifecycleOwner des Fragments als LifecycleOwner für alle von onCreateView() zurückgegebenen Ansichten zurückgibt. (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. Siehe 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-Attributnamen 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 wurden veröffentlicht. 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 wurden veröffentlicht. Version 1.2.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in DialogFragment wurde behoben, der beim Aufrufen von getLayoutInflater() aus onCreateDialog() zu einem StackOverflowError führte. (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 gibt kein UnsupportedOperationException mehr für die Verwendung des falschen Konstruktors in der Layoutvorschau aus. (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)
  • Fragmente schlagen jetzt für alle Fragment-APIs, die sowohl ein get- als auch ein require-Äquivalent enthalten, vor, die verknüpften require___()-Methoden für aussagekräftigere Fehlermeldungen anstelle von checkNotNull(get___()), requireNonNull(get___()) oder get___()!! zu verwenden. (aosp/1202883)

Fehlerkorrekturen

  • Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981)
  • Die bestehende Lint-Prüfung wurde verbessert, die die Verwendung von viewLifecycleOwner bei Verwendung von observe vorschlägt, um auch die Version der Erweiterungsmethode livedata-ktx von observe zu verarbeiten. (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 wurden veröffentlicht. 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 maximiert 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. Er ersetzt die Verwendung von FrameLayout oder anderen Layouts. Es unterstützt auch dieselben class-, android:name- und optionalen android:tag-Flags wie das <fragment>-Tag, verwendet aber ein normales FragmentTransaction, um dieses erste Fragment hinzuzufügen, anstelle des von <fragment> verwendeten benutzerdefinierten Codepfads.
  • 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 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 mit reifizierten Typen (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)) wurden ebenfalls fragment-ktx hinzugefügt.
  • Integration von Lifecycle ViewModel SavedState: SavedStateViewModelFactory wird jetzt standardmäßig bei der Verwendung von by viewModels(), by activityViewModels(), dem ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwendet.
  • Neue Lint-Prüfungen: Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie getViewLifecycleOwner() verwenden, wenn LiveData von onCreateView(), onViewCreated() oder onActivityCreated() beobachtet wird.
  • Einstellung getFragmentManager(): Die Methoden getFragmentManager() und requireFragmentManager() für Fragment wurden verworfen und durch eine einzelne getParentFragmentManager()-Methode ersetzt, die das Nicht-Null-FragmentManager-Objekt zurückgibt, dem das Fragment hinzugefügt wurde. Mit isAdded() können Sie feststellen, 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 findNavController() in onCreate() deiner Aktivitäten nicht 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 wurden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Eine unbeabsichtigte Änderung des Verhaltens wurde behoben, bei der entfernte Fragmente weiterhin von findFragmentById() / findFragmentByTag() zurückgegeben werden, während ihre Exit-Animationen/Ü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)
  • Es wurde ein Problem behoben, bei dem Ansichten fälschlicherweise als INVISIBLE markiert wurden, nachdem ein ausgeblendetes Fragment per Pop-up eingefügt wurde. (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 zu verdeutlichen, 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 verwendet die LintFix-Funktion zur Verwendung von getViewLifecycleOwner() bei der Beobachtung von LiveData aus onCreateView(), onViewCreated() oder onActivityCreated() (eingeführt in Fragment 1.2.0-rc01) jetzt die Kotlin-Eigenschaftszugriffssyntax viewLifecycleOwner anstelle von getViewLifecycleOwner(). (aosp/1143821)

Version 1.2.0-rc01

23. Oktober 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 und androidx.fragment:fragment-testing:1.2.0-rc01 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 für DialogFragment garantieren jetzt, dass die an sie übergebenen DialogInterface nicht null sind und dass getDialog() bei ihrer Ausführung einen anderen Wert 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 korrigiert, wenn die FragmentContainerView-Klasse verschleiert ist. (b/142657034)

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name in einer FragmentContainerView verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt. In diesem Fall müssen Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. Wir haben die Lint-Regel deaktiviert, die einen Wechsel zu FragmentContainerView vorschlägt, bis das Problem durch aapt2 behoben wurde. (b/142601969)

Version 1.2.0-beta02

11. Oktober 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 und androidx.fragment:fragment-testing:1.2.0-beta02 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 bei 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 bietet. (b/139830056)

Fehlerkorrekturen

  • Ein Problem mit ClassCastException bei Verwendung von androidx.transition wurde behoben. (b/140680619)
  • Bei Verwendung von Übergang 1.3.0-beta01 warten Fragmente jetzt bis zum Abschluss von androidx.transition-Übergängen (zusätzlich zu Framework-Übergängen und -Animationen, die in Fragment 1.2.0-alpha03 bzw. Fragment 1.2.0-alpha02 korrigiert wurden) auf den Abschluss von onDestroyView(). (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)
  • Es wurde ein Problem in API 17 und niedriger behoben, wenn androidx.transition-Übergänge in der Stammansicht des Fragments in FragmentContainerView verwendet wurden. (b/140361893)
  • Das fragment-testing-Artefakt hängt jetzt von AndroidX Test 1.2.0 ab, wodurch eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben wird. (b/139100149)
  • 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 wurden veröffentlicht. 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)
  • Es wurde ein Problem behoben, bei dem Fragmente Activity.findViewById() statt vorher nicht aufrufen. (aosp/1116431)

Version 1.2.0-alpha03

5. September 2019

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

API-Änderungen

  • 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)
  • Es wurde ein Problem behoben, bei dem die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment auftaucht und gleichzeitig ein neues hinzugefügt wurde. (b/111659726)
  • In Fragmenten wird jetzt nicht nur auf das Ende von Animationen gewartet, bevor onDestroyView() gesendet wird, sondern auch auf das Ende von Übergängen (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 einem Fragment verwendet wird. (b/135716331)
  • Die Standardanimationen bei der Verwendung von TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE mit setTransition auf einem FragmentTransaction wurden aktualisiert und stimmen jetzt mit den Animationen überein, die von Aktivitäten auf Android 10-Geräten verwendet werden. (aosp/1012812, aosp/1014730)

API-Änderungen

  • FragmentContainerView wird als dringend empfohlener Container für dynamisch hinzugefügte Fragmente eingeführt und ersetzt die Verwendung von FrameLayout usw., da damit Probleme mit der Z-Reihenfolge von Animationen und 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)
  • Neue Überlastungen von add() und replace() für FragmentTransaction hinzugefügt, die eine Class<? extends Fragment> und optionale Bundle von Argumenten annehmen. Bei diesen Methoden wird mithilfe von FragmentFactory eine Instanz des hinzuzufügenden Fragments erstellt. Kotlin-Erweiterungen mit reifizierten Typen (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)) wurden ebenfalls fragment-ktx hinzugefügt. (b/126124987)
  • Lebenszyklus-Callbacks von Fragment wurden @MainThread-Annotationen 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

  • Von Fragment 1.1.0-rc04: Fragmente brechen jetzt verschobene Übergänge in Fragmenten korrekt ab. (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)
  • Bei Fragmenten wird jetzt gewartet, bis die 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 NullPointerException-Problem wurde behoben, das auftrat, wenn Übergänge mit gemeinsam genutzten Elementen verwendet und gleichzeitig ein Pop-up- und Add-Vorgang kombiniert wurde. (b/120507394)
  • Eine Behelfslösung für IllegalStateExceptions bei Verwendung von FragmentPagerAdapter und FragmentStatePagerAdapter in Robolectric-Tests wurde hinzugefügt. (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

  • Problem mit NullPointerException behoben, das auftrat, wenn FragmentTransaction vor replace() verwendet wurde und setPrimaryNavigationFragment() verwendet wurde. (b/134673465)

Version 1.1.0

Version 1.1.0

5. September 2019

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

Wichtige Änderungen seit Version 1.0.0

  • fragment-testing: Das Artefakt fragment-testing bietet eine FragmentScenario-Klasse zum isolierten Testen eines Fragments. Weitere Informationen finden Sie in der Dokumentation zum Testen 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 das mittlerweile verworfene 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 No-Argument-Konstruktor 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)
  • Problem mit NullPointerException behoben, das auftrat, wenn FragmentTransaction vor replace() verwendet wurde und setPrimaryNavigationFragment() verwendet wurde. (b/134673465)

Version 1.1.0-beta01

5. Juni 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 und androidx.fragment:fragment-testing:1.1.0-beta01 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 wurden veröffentlicht. 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üelemente, 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. Aktualisieren Sie auf die Einstellungen 1.1.0-alpha05, wenn Sie diese Version von Fragmenten verwenden.

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

  • Fragmente, deren Lebenszyklus über setMaxLifecycle() begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren 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() für ein FragmentTransaction aufrufen. Dies ersetzt das mittlerweile verworfene 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 dann aufgerufen, wenn das Fragment sichtbar wird (d.h. der Back Stack wird geplatzt).

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, was dazu führte, dass ViewModels und untergeordnete beibehaltene Fragmente nicht ordnungsgemäß entsorgt wurden. (b/129593351)
  • Ein Absturz in restoreSaveState, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde, wurde behoben. (b/130433793) (aosp/947824)
  • Es wurden Probleme behoben, durch die ein OnBackPressedCallback, das mit einem Fragmentlebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn das FragmentManager einen Back Stack hätte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209)
  • In Fragmenten wird LAYER_TYPE_HARDWARE für Animationen nicht mehr erzwungen. Wenn Sie speziell eine Hardwareebenen-Animation benötigen, legen Sie diese 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 wurden veröffentlicht. 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 Argument vom Typ „Bundle“ 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 annotiert. (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 hängt jetzt von androidx.test:core-ktx 1.1.0 (stabil) ab (b/121209673)
  • 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. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (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 Kompatibilität mit Binärprogrammen mit früheren Releases von Fragmenten 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 FragmentSzenario können Sie jetzt eine Lambda-Funktion für die Fragment-Konstruktion verwenden, um 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 zum Fragmenttest.

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 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.