Fragment
App in mehrere unabhängige Bildschirme aufteilen, die innerhalb einer Aktivität gehostet werden
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
26. Juni 2024 1.8.1 - - -

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 Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:

Groovig

dependencies {
    def fragment_version = "1.8.1"

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

Kotlin

dependencies {
    val fragment_version = "1.8.1"

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

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.8

Version 1.8.1

26. Juni 2024

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, durch das Fragmente ohne Container sofort DESTROYED waren, wenn eine vorausgesagte Zurück-Geste gestartet wurde. Jetzt bleiben sie im Status CREATED, bis die Geste abgeschlossen ist. (If6b83, b/345244539)

Version 1.8.0

12. Juni 2024

androidx.fragment:fragment-*:1.8.0 wurde 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. Sie übernimmt automatisch das Speichern und Wiederherstellen des Fragmentstatus. 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-Schnittstelle der FragmentManager wird jetzt im Rahmen der Ausführung von Vorgängen in FragmentManager ausgelöst und bewegt ihn entsprechend dem Timing des onBackStackChangeCommitted-Callbacks näher.

Version 1.8.0-rc01

29. Mai 2024

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

Fehlerkorrekturen

  • Von Fragment 1.7.1: Die vorausschauende Zurück-Funktion wird jetzt nur für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator- oder einen Seekable Androidx-Übergang haben. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem schwarzen Bildschirm führt. (I43037, b/339169168)

Version 1.8.0-alpha02

17. April 2024

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

Fehlerkorrekturen

  • Aus Fragment 1.7.0-rc02: Es wurden Logs hinzugefügt, die angeben, warum das Festlegen einer sharedElement ohne weitere Übergänge nicht ausgeführt werden kann. (Iec48e)
  • Ab Fragment 1.7.0-rc02: Es wurde ein Fehler behoben, bei dem Transaktionen, bei denen alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurden, zu einem Absturz führte. 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 dem neuen AndroidFragment Composable können Fragmente über den Klassennamen des Fragments zur Hierarchie „Compose“ hinzugefügt werden. Sie übernimmt automatisch das Speichern und Wiederherstellen des Fragmentstatus. Dies kann als direkter Ersatz für AndroidViewBinding Composable verwendet werden.(b/312895363, Icf841)

Änderungen an der Dokumentation

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

Aktualisierung der Abhängigkeit

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

  • Predictive Back wird jetzt nur für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator- oder einen Seekable Androidx-Übergang aufweisen. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem leeren Bildschirm führen würde. (I43037, b/339169168)

Version 1.7.0

1. Mai 2024

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

Unterstützung für Rückengesten

  • Fragmente unterstützen jetzt bei der Verwendung von Animator oder bei Verwendung von AndroidX Transition 1.5.0 für die Vorhersage in der App. So können Nutzer mit der Zurück-Touch-Geste das vorherige Fragment anzeigen, indem sie nach deinem Animations-/Übergang suchen, bevor sie sich entscheiden, die Transaktion durch Abschließen der Touch-Geste zu speichern oder den Vorgang abzubrechen.
Übergangssystem XML-Ressource Unterstützt die vorausschauende Rückenbahn
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 vorausschauenden Zurück-Touch-Geste in Fragmenten Probleme mit der vorausschauenden Zurück-Unterstützung feststellen, melden Sie ein Problem bei Fragment. Verwenden Sie dabei ein Beispielprojekt, in dem Ihr Problem reproduziert wird. Du kannst die automatische Vervollständigung deaktivieren, indem du FragmentManager.enabledPredictiveBack(false) in den onCreate() deiner Aktivitäten verwendest.

FragmentManager.OnBackStackChangedListener() stellt jetzt onBackStackChangeProgressed() und onBackStackChangeCancelled() für den prognostizierten zurückliegenden Fortschritt bzw. abgesagte Ereignisse bereit.

Artefakt zur Fragmenterstellung

Es wurde ein neues fragment-compose-Artefakt erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentierten Architektur zu einer vollständig Compose-basierten Architektur verschoben werden.

Das erste in diesem neuen Artefakt verfügbare Feature ist eine content-Erweiterungsmethode für Fragment. Sie soll die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen. 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 wurde 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)
  • Es wurde ein Fehler behoben, bei dem Transaktionen, bei denen alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurden, zu einem Absturz führte. 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 wurde veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.

Aktualisierung der Abhängigkeit

Version 1.7.0-beta01

20. März 2024

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

API-Änderungen

  • FragmentHostCallback ist jetzt in Kotlin geschrieben, sodass die Null-Zulässigkeit des generischen Typs des Hosts der Null-Zulässigkeit des Rückgabetyps onGetHost() entspricht. (I40af5)

Fehlerkorrekturen

  • Folgendes Problem wurde behoben: Wenn eine vorausschauende Zurück-Geste für ein Fragment, das sich nicht in einem Container befindet, festgeschrieben wurde, wurde dieses Fragment nie gelöscht. Das Fragment wird jetzt sofort in den endgültigen Zustand 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 wurde veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.

Fehlerkorrekturen

  • Das bekannte Problem in der vorherigen Fragment-Version wurde behoben, bei dem Fragmente mithilfe der Predictive Back-Unterstützung für Animator- oder AndroidX-Übergänge eine NullPointerException von handleOnBackProgressed ausgeben, wenn jemals über addOnBackStackChangedListener kein FragmentManager.OnBackStackChangedListener hinzugefügt wurde. (I7c835)

Version 1.7.0-alpha09

24. Januar 2024

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

Artefakt zur Fragmenterstellung

Es wurde ein neues fragment-compose-Artefakt erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentierten Architektur zu einer vollständig Compose-basierten Architektur verschoben werden.

Das erste in diesem neuen Artefakt verfügbare Feature ist eine content-Erweiterungsmethode für Fragment. Sie soll die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen. Dazu wird eine ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

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

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

Neue Funktionen

  • FragmentManager.OnBackStackChangedListener() stellt jetzt onBackStackChangeProgressed() und onBackStackChangeCancelled() für den prognostizierten zurückliegenden Fortschritt bzw. abgesagte Ereignisse bereit. (214b87)

Bekanntes Problem

  • Wenn Fragment die vorausschauende Zurück-Unterstützung für Animator- oder AndroidX-Übergänge verwendet, geben Fragmente eine NullPointerException von handleOnBackProgressed aus, wenn noch nie FragmentManager.OnBackStackChangedListener über addOnBackStackChangedListener hinzugefügt wurde. Durch das manuelle Hinzufügen eines Listeners lässt sich der Absturz umgehen. Dieses Problem wird in der nächsten Version von Fragmenten behoben.

Version 1.7.0-alpha08

10. Januar 2024

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

Fehlerkorrekturen

  • Ein NullPointerException wurde behoben, der durch das Festlegen eines Übergangs für gemeinsam genutzte Elemente und das Fehlen einer Eingabe/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 wurde veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.

Aktualisierung der Abhängigkeit

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

Version 1.7.0-alpha05

20. September 2023

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

Neue Funktionen

  • Fragmente unterstützen jetzt Predictive Back bei Verwendung von Androidx Transitions. Auf diese Weise können Sie die Zurück-Touch-Geste verwenden, um mit Ihrer benutzerdefinierten Androidx-Übergang zum vorherigen Fragment zu springen, bevor Sie sich entscheiden, die Transaktion mit der abgeschlossenen Geste entweder zu übergeben oder abzubrechen. Sie müssen die Version 1.5.0-alpha03 für die Umstellung 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. Dies könnte durch ein Problem in der Übergangsbibliothek verursacht werden. (b/300157785). Wenn Sie dieses Problem sehen, melden Sie ein Problem für Fragment und geben Sie ein Beispielprojekt an, in dem das Problem reproduziert wird. Du kannst die automatische Vervollständigung deaktivieren, indem du FragmentManager.enabledPredictiveBack(false) in den onCreate() deiner Aktivitäten verwendest.

Version 1.7.0-alpha04

6. September 2023

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Fragmente beim Abbrechen einer Touch-Geste zur automatischen Vervollständigung nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
  • Regressionen behoben, bei denen Animationen mit Übergängen ausgeführt werden durften. (I59f36)
  • Bei der Verwendung von Predictive Back mit Fragmenten wurde ein Problem behoben, bei dem ein Versuch, das vorletzte Fragment des Back-Stacks zweimal schnell hintereinander zurückzugehen, zu einem Absturz führte. (Ifa1a4)

Version 1.7.0-alpha03

23. August 2023

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

Fehlerkorrekturen

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

Version 1.7.0-alpha02

9. August 2023

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

Fehlerkorrekturen

  • Wenn Sie Fragmente mit vorausschauenden Zurück-Gesten aus API 34 und ein Übergangssystem verwenden, das keine Suche (Animations, Transitions) oder keine Übergänge unterstützt, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor sie die Aktion „Zurück“ ausführen. (I8100c)

Version 1.7.0-alpha01

7. Juni 2023

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

Neue Funktionen

  • Fragmente unterstützen jetzt bei der Verwendung von Animator die Hintergrundwiedergabe 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 den experimentellen enablePredictiveBack() verwenden und false übergeben.

Version 1.6

Version 1.6.2

1. November 2023

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

Fehlerkorrekturen

  • Wenn das Fragment eines FragmentContainerView zu groß ist, kann auf seine Status wie FragmentManager, Host und ID jetzt über den onInflate-Callback zugegriffen werden. (I1e44c, b/307427423)
  • Wenn Sie clearBackStack verwenden, um eine Reihe von Fragmenten zu entfernen, werden jetzt alle ViewModel-Elemente eines verschachtelten Fragments gelöscht, wenn die ViewModels des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)

Version 1.6.1

26. Juli 2023

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem der gespeicherte Status, der beim Beenden der Aktivität, aber nicht gelöscht wurde, fälschlicherweise im Cache gespeichert wurde, selbst nachdem die Fragmentinstanz wieder in den Status RESUMED verschoben wurde. Dies würde dazu führen, dass der im Cache gespeicherte Status wiederverwendet wird, wenn sich die Fragmentinstanz im Back Stack befunden hat, wenn die Multiple Back Stacks API verwendet wurde, um das Fragment zu speichern und wiederherzustellen. (I71288, b/246289075)

Aktualisierung der Abhängigkeit

  • Das Fragment hängt jetzt von der Aktivität 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 auf den Status der privaten Bibliothek (benutzerdefinierte Parcelable-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser Status wird jetzt immer in einer Bundle gespeichert, mit der genau ermittelt werden kann, woher der Status eines Fragments stammt.
  • Die FragmentManager.OnBackStackChangedListener-Oberfläche wurde um zwei zusätzliche Callbacks von onBackStackChangeStarted und onBackStackChangeCommitted erweitert. Diese werden mit jedem Fragment direkt vor dem Hinzufügen/Entfernen aus dem Back-Stack des Fragments bzw. direkt nach dem Commit der Transaktion aufgerufen.
  • FragmentStrictMode hat ein neues WrongNestedHierarchyViolation hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht zum childFragmentManager des übergeordneten Elements hinzugefügt wird.
  • 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, die von diesen Methoden aufgerufen werden, immer sofort zum Absturz gebracht würden.
  • DialogFragment bietet jetzt über die requireComponentDialog() API Zugriff auf die zugrunde liegende ComponentDialog.
  • Das Fragment hängt jetzt vom Lebenszyklus 2.6.1 ab.
  • Das Fragment hängt jetzt von SavedState 1.2.1 ab.
  • Das Fragment hängt jetzt von ProfileInstaller 1.3.0 ab.
  • Das Artefakt fragment-testing-manifest trennt die Manifesteinträge vom Rest der Komponenten zum Fragmenttest. Sie haben dann folgende Möglichkeiten:

    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 wurde veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.6.0-beta01

19. April 2023

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

Fehlerkorrekturen

  • Die Verwendung von postponeEnterTransition mit einem Zeitlimit und das anschließende Ersetzen des verschobenen Fragments führt nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)
  • Die neuen onBackStackChangeStarted- und onBackStackChangeCommitted-Callbacks senden ein Fragment jetzt nur einmal, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)

Version 1.6.0-alpha09

5. April 2023

androidx.fragment:fragment-*:1.6.0-alpha09 wurde 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 sie jetzt alle Build-Fehler ausgeben, wenn sie nicht aus dem Hauptthread aufgerufen werden, und nicht warten, bis sie zur Laufzeit fehlschlagen. (IC9665, b/236538905)

Fehlerkorrekturen

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

Version 1.6.0-alpha08

22. März 2023

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

Verhaltensänderung

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

Fehlerkorrekturen

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

Aktualisierung der Abhängigkeiten

Version 1.6.0-alpha07

8. März 2023

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

Fehlerkorrekturen

  • Ab Fragment 1.5.6: Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob es Menüelemente hinzugefügt hat, ungültig wurde. (50f098, b/244336571)

Version 1.6.0-alpha06

22. Februar 2023

androidx.fragment:fragment-*:1.6.0-alpha06 wurde 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 wurde veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Die 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 wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.

Neue Funktionen

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

Änderungen im Verhalten

  • Fragmente stellen jetzt ihren SavedStateRegistry-Status vor dem onAttach() wieder her, damit sie für alle Methoden des höheren Lebenszyklus verfügbar sind. (I1e2b1)

API-Änderungen

  • Das Artefakt fragment-testing-manifest trennt die Manifesteinträge vom Rest der Komponenten zum Fragmenttest. Sie haben dann folgende Möglichkeiten:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

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

Fehlerkorrekturen

  • Ab Fragment 1.5.5: Der Status ViewModel wird in Fragmenten 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 wurden veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.6.0-alpha02

24. August 2022

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

Fehlerkorrekturen

  • Von Fragment 1.5.2: Ein Problem wurde behoben, bei dem das gleichzeitige Ausführen einer popBackStack()- und einer replace()-Transaktion dazu führen konnte, dass bei verlassenen Fragmenten das 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 wurden veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.

Änderungen im Verhalten

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

Fehlerkorrekturen

  • Aus Fragment 1.5.1: Beheben Sie eine Regression in DialogFragmentCallbacksDetector, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zum 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 wurden veröffentlicht. Version 1.5.7 enthält diese Commits.

Fehlerkorrekturen

  • Die Verwendung von postponeEnterTransition mit einem Zeitlimit und das anschließende Ersetzen des verschobenen Fragments führt nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)

Version 1.5.6

22. März 2023

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

Fehlerkorrekturen

  • 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)
  • Das Aufrufen von clearFragmentResultListener in setFragmentResultListener funktionierte nicht, wenn Lifecycle bereits STARTED war und bereits ein Ergebnis verfügbar war. Dieses Problem wurde behoben. (If7458)

Version 1.5.5

7. Dezember 2022

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

Fehlerkorrekturen

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

Version 1.5.4

24. Oktober 2022

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

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem eine benutzerdefinierte FragmentController mit einem Host, der keine Anbieter-Callback-Schnittstelle (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) implementiert hat, und das Aufrufen der eingestellten Weiterleitungsfunktion keine Weiterleitung an untergeordnete Fragmente auslöste. (I9b380)

Version 1.5.3

21. September 2022

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Back-Stack onMultiWindowModeChanged()-, onPictureInPictureModeChanged()-, onLowMemory()- und onConfigurationChanged()-Callbacks erhielten. (I34581, I8dfe6, b/242570955)
  • Verschachtelte untergeordnete Fragmente erhalten 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

  • Es wurde ein Problem behoben, bei dem das gleichzeitige Ausführen einer popBackStack()- und einer replace()-Transaktion dazu führen konnte, dass bei verlassenen Fragmenten das 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

  • Es wurde eine Regression im DialogFragmentCallbacksDetector behoben, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zum Absturz von Lint führen würde. (b/237567009)

Aktualisierung der Abhängigkeit

Version 1.5.0

29. Juni 2022

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

Wichtige Änderungen seit Version 1.4.0

  • CreationExtras-Integration: Fragment kann jetzt eine zustandslose ViewModelProvider.Factory über CreationExtras des Lebenszyklus 2.5.0 bereitstellen.
  • Integration des Komponentendialogfelds: DialogFragment verwendet jetzt ComponentDialog über die Aktivität 1.5.0 als Standarddialogfeld, das von onCreateDialog() zurückgegeben wird.
  • Refaktorierung des gespeicherten Instanzstatus: Fragmente haben begonnen, die Art und Weise zu ändern, wie sie ihren Instanzstatus speichern. Damit soll klar identifiziert werden, welcher Status im Fragment gespeichert wurde und aus welcher Quelle er stammt. Zu den aktuellen Änderungen gehören:
    • FragmentManager speichert den gespeicherten Instanzstatus jetzt in einer Bundle statt direkt in einem benutzerdefinierten Parcelable.
    • Über die Fragment Result APIs festgelegte Ergebnisse, die noch nicht übermittelt wurden, werden jetzt getrennt vom internen Status der FragmentManager gespeichert.
    • Der mit jedem einzelnen Fragment verknüpfte Status wird jetzt getrennt vom internen Status des FragmentManager gespeichert. So können Sie die Menge des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Fragment-Fehlerbehebungsprotokoll korrelieren.

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 der Aktivität 1.4.0 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste äquivalente API-Oberfläche, die von Fragmenten verwendet werden sollten.

Version 1.5.0-rc01

11. Mai 2022

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

Refaktorierung des gespeicherten Instanzstatus

  • Der mit jedem einzelnen Fragment verknüpfte Status wird jetzt getrennt vom internen Status des FragmentManager gespeichert. So können Sie den Umfang des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Debugging-Logging für Fragmente korrelieren. (a153e0, b/207158202)

Version 1.5.0-beta01

20. April 2022

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

API-Änderungen

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

Refaktorierung des gespeicherten Instanzstatus

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

Version 1.5.0-alpha05

6. April 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 und androidx.fragment:fragment-testing:1.5.0-alpha05 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 isoliert getestet werden können. Die in der Aktivität 1.4.0-alpha01 hinzugefügten APIs MenuHost und MenuProvider bieten eine testbare, lebenszyklusbewusste äquivalente API-Oberfläche, die von Fragmenten verwendet werden sollten. (I50a59, I20758)

Fehlerkorrekturen

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

Version 1.5.0-alpha03

23. Februar 2022

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

API-Änderungen

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

Änderungen im Verhalten

Version 1.5.0-alpha02

9. Februar 2022

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

Neue Funktionen

  • 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. (I8f678)

Version 1.5.0-alpha01

26. Januar 2022

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

Neue Funktionen

Fehlerkorrekturen

  • 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)
  • Von Fragment 1.4.1: Wenn eine benutzerdefinierte Lambda-Funktion für ownerProducer mit der Lazy-Funktion by viewModels() mit der Lazy-Funktion by viewModels() verwendet wird, wird jetzt die defaultViewModelProviderFactory von diesem Inhaber verwendet, wenn kein benutzerdefiniertes ViewModelProvider.Factory angegeben wurde, anstatt immer die Factory des Fragments zu verwenden. (I56170, b/214106513)
  • Absturz behoben, der beim ersten Zugriff auf ein ViewModel über einen registerForActivityResult()-Callback einer Fragment erfolgte. (IEa2b3)

Version 1.4

Version 1.4.1

26. Januar 2022

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

Fehlerkorrekturen

  • FragmentContainerView löst keine ungültige Statusausnahme mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (IC185b, b/213086140)
  • Wenn Sie eine benutzerdefinierte ownerProducer-Lambda-Funktion mit der Lazy-Funktion by viewModels() verwenden, wird jetzt die defaultViewModelProviderFactory von diesem Inhaber verwendet, wenn kein benutzerdefiniertes ViewModelProvider.Factory angegeben wurde. Es wird nicht immer die Fabrik des Fragments verwendet. (I56170, b/214106513)

Version 1.4.0

17. November 2021

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

Wichtige Änderungen seit Version 1.3.0

  • Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre Anwendung oder Bibliotheken, von denen Sie abhängig sind, keine verworfenen Fragment-APIs aufrufen. Wenn ein Verstoß festgestellt wird, können Sie eine Lognachricht ausgeben, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. Die FragmentStrictMode.Policy, die steuern, welche Prüfungen aktiviert sind und welche Strafen ausgelöst werden, können mit der neuen setStrictModePolicy()-Methode für FragmentManager festgelegt werden. Diese Richtlinie gilt für diese FragmentManager und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Siehe StrictMode für Fragmente.
  • FragmentContainerView bietet jetzt eine getFragment()-Methode, die das Fragment zurückgibt, das zuletzt dem Container 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
    
  • In FragmentScenario ist jetzt Closeable implementiert, sodass Sie es mit der Kotlin-Methode use oder try-with-resources verwenden können.

  • FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} wurde hinzugefügt, um anzugeben, ob die standardmäßige Animation des Aktivitätsübergangs aus Ihrem Design in „Fragmente“ aktiviert werden soll.

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

Mehrere Back Stacks

FragmentManager verwaltet einen Back Stack 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 drei neue FragmentManager APIs erweitert: saveBackStack(String name), restoreBackStack(String name) und clearBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status jedes Fragments, 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. 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() insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („popped“) sowie 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 Back-Stack per Pull ausgeführt werden, wenn der angegebene Name auf dem Back-Stack nicht gefunden wird oder wenn ein Nullname angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor noch keine Fragment-Transaktion mit addToBackStack() mit diesem genauen Namen, der nicht null ist, durchgeführt haben.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und 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 dieser Gruppe von Transaktionen verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
  • Kein gespeichertes Fragment kann ein beibehaltenes Fragment oder ein beibehaltenes Fragment in seinem transitiven Satz untergeordneter Fragmente sein, um sicherzustellen, dass FragmentManager nach dem Speichern des Back-Stacks 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 Back-Stacks: Eine ausführliche Erläuterung.

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 wurden veröffentlicht. 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.

Lint

  • Die Lint-Warnung DetachAndAttachFragmentInSameFragmentTransaction wurde hinzugefügt, um den Aufruf von detach() und attach() im selben Fragment im selben FragmentTransaction zu erkennen. Da sich diese ergänzenden Vorgänge gegenseitig abbrechen, wenn sie in derselben Transaktion ausgeführt werden, müssen sie in separate Transaktionen aufgeteilt werden, um etwas zu tun. (aosp/1832956, b/200867930)
  • Der Lint-Fehler FragmentAddMenuProvider zur Korrektur der Verwendung des Fragmentlebenszyklus wurde dem Lebenszyklus der Fragmentansicht hinzugefügt, wenn die addMenuProvider API von MenuHost verwendet wird. (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 Einstellungsmeldung für onActivityCreated() sowohl für Fragment als auch für DialogFragment wurde um weitere Details erweitert. (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 wurden veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Die Klasse FragmentContainerView wurde in Kotlin umgeschrieben. Dadurch wird sichergestellt, dass die Funktion getFragment die NULL-Zulässigkeit korrekt einhält. (If694a, b/189629145)
  • FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506).

Fehlerkorrekturen

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

Fehlerkorrekturen

  • Die Lint-Prüfung für UseRequireInsteadOfGet wurde verbessert, um redundante Klammern besser zu erkennen. (I2d865)
  • Die Lint-Prüfung für UseGetLayoutInflater wurde zur Bearbeitung zusätzlicher Grenzfälle verbessert. (Beispiel: 5423)

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

Fehlerkorrekturen

  • Es wurde ein Problem mit mehreren Back-Stacks behoben, bei dem schnell zwischen Back-Stacks gewechselt wurde, die beim Wiederherstellen eines FragmentTransaction oder als zweite Kopie eines Fragments als IllegalStateException angezeigt wurden. (I9039f)
  • Es wurde ein Problem behoben, bei dem FragmentManager eine Kopie eines zuvor über saveBackStack() gespeicherten Status beibehalten konnte, auch nachdem dieser Status wiederhergestellt wurde. (ID 212)
  • Die Methode dismissAllowingStateLoss() von DialogFragment stürzt nicht mehr ab, wenn Sie sie aufrufen, nachdem der Status gespeichert wurde, wenn Sie das DialogFragment ausdrücklich über die Methode show(FragmentTransaction, String) 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 wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Von Fragment 1.3.6: Die Ansicht des Fragments ist jetzt korrekt auf GONE festgelegt, wenn hide() verwendet wird und für die Stammansicht transitionGroup=”true” festgelegt ist. (aosp/1766655, b/193603427)
  • Von Fragment 1.3.6: FragmentActivity entsperrt jetzt immer den gespeicherten Status als ersten Vorgang in Lebenszyklus-Callbacks, die von ihm überschrieben werden. (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 wurden veröffentlicht. 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 auch in FragmentController eingestellt. Wenn Sie FragmentController verwenden, um Fragmente außerhalb von FragmentActivity zu hosten, muss Ihr FragmentHostCallbacks SavedStateRegistryOwner implementieren. (Iba68e, b/188734238)

Fehlerkorrekturen

  • Der Aufruf von saveBackStack() im Rahmen der Unterstützung mehrerer Back-Stacks schlug fehl, wenn gleichzeitig ein FragmentTransaction mit replace() ausgeführt wurde. Dieses Problem wurde behoben. (I73137)
  • Ein NullPointerException wurde behoben, der nach der manuellen Wiederherstellung eines gespeicherten Back-Stacks mit mehreren Transaktionen auftreten konnte, wenn die restoreBackStack() API für die Unterstützung mehrerer Back-Stacks verwendet wurde. Dadurch wurde auch ein Problem behoben, bei dem setReorderingAllowed(true) nicht für alle Transaktionen geprüft wurde. (I8c593)
  • Es wurde ein Problem behoben, bei dem FragmentManager den zuvor gespeicherten Status von Fragmenten fälschlicherweise weiterhin wiederherstellen konnte, nachdem diese Fragmente aus FragmentManager entfernt wurden, wodurch der gespeicherte Status im Laufe der Zeit kontinuierlich anstieg. (I1fb8e)

Version 1.4.0-alpha03

16. Juni 2021

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

Neue Funktionen

  • Alle „Fragment StrictMode“-Klassen vom Typ Violation wurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638)
    • FragmentTagUsageViolation enthält jetzt eine detailliertere Fehlermeldung, die den übergeordneten Container enthält, dem das Fragment hinzugefügt worden wäre. (IC33a7)
    • 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, um das Fragment, das den Verstoß verursacht, und alle anderen enthaltenen Informationen anzugeben. (Icc6ac)
    • Die Klassen, die RetainInstanceUsageViolation erweitern, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55)
    • FragmentReuseViolation hat jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)
    • SetUserVisibleHintViolation hat jetzt eine detailliertere Fehlermeldung, in der angegeben ist, auf was für den für Nutzer sichtbaren Hinweis festgelegt wurde. (Ib2d5f)

Änderungen im Verhalten

  • Die Einschränkung für den Aufruf von fitsSystemWindows auf einem FragmentContainerView wurde rückgängig gemacht. Deine App wird dadurch nicht mehr zum Absturz gebracht. (6b8ddd, b/190622202)

Fehlerkorrekturen

  • Aus Fragment 1.3.5: Eine Regression bei Übergängen von gemeinsam genutzten Elementen, die in Fragment 1.3.4 von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten jetzt Übergangsgruppen (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background) und gemeinsam genutzte Elemente geben keine IndexOutOfBoundsException mehr aus. (I16484, b/188679569, b/188969304)
  • FragmentManager stürzt nicht mehr ab, wenn du versuchst, ein entfernendes Fragment auszublenden. (I573dd, b/183634730)
  • Die Lint-Prüfung OnCreateDialogIncorrectCallback stürzt bei der Auswertung einer Variablen der obersten Ebene nicht mehr ab. (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 strengen Modusrichtlinie. (I02df6, b/187872638)
  • FragmentStrictMode unterstützt jetzt die Ausnahme von bestimmten Fragment-Klassen vom strengen Modus Violations, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)

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

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

Änderungen im Verhalten

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

Neue Funktionen

  • FragmentContainerView bietet jetzt eine getFragment()-Methode, die das Fragment zurückgibt, das zuletzt dem Container hinzugefügt wurde. Dies verwendet dieselbe Logik wie findFragmentById() mit der ID des FragmentContainerView, ermöglicht aber eine Verkettung des Aufrufs. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} wurde hinzugefügt, um anzugeben, ob die standardmäßige Animation des Aktivitätsübergangs aus Ihrem Design in „Fragmente“ aktiviert werden soll. (I46652)

Mehrere Back Stacks

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. 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() insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („popped“) sowie 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 Back-Stack per Pull ausgeführt werden, wenn der angegebene Name auf dem Back-Stack nicht gefunden wird oder wenn ein Nullname angegeben wird, passiert bei saveBackStack() nichts, wenn Sie zuvor noch keine Fragment-Transaktion mit addToBackStack() mit diesem genauen Namen, der nicht null ist, durchgeführt haben.
  • Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird, onSaveInstanceState() jedes Fragments aufgerufen und 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 dieser Gruppe von Transaktionen verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
  • Kein gespeichertes Fragment kann ein beibehaltenes Fragment oder ein beibehaltenes Fragment in seinem transitiven Satz untergeordneter Fragmente sein, um sicherzustellen, dass FragmentManager nach dem Speichern des Back-Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.

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

Fragment StrictMode

Die FragmentStrictMode APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre Anwendung oder Bibliotheken, von denen Sie abhängig sind, keine verworfenen Fragment-APIs aufrufen. Wenn ein Verstoß festgestellt wird, können Sie eine Lognachricht ausgeben, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. Die FragmentStrictMode.Policy, die steuern, welche Prüfungen aktiviert sind und welche Strafen ausgelöst werden, können mit der neuen setStrictModePolicy()-Methode für FragmentManager festgelegt werden. Diese Richtlinie gilt für diese FragmentManager und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (Nr. 123, Nr. 131, Nr. 150, b/143774122)

  • detectFragmentReuse() erkennt, ob eine zuvor entfernte Fragment-Instanz einem FragmentManager wieder hinzugefügt wird. Sie sollten niemals mit einer Fragment-Instanz interagieren oder diese beibehalten, 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. Du solltest immer FragmentContainerView verwenden, wenn du Fragmente als Teil deines Layouts aufblähst. (#141, b/153738235)
  • detectWrongFragmentContainer() erkennt, wenn Sie einem Container ein Fragment hinzufügen, das kein FragmentContainerView ist. Sie sollten in Ihrem Layout immer FragmentContainerView als Container für Fragmente verwenden. (Nr. 146, b/181137036)
  • detectRetainInstanceUsage() erkennt, wenn Sie die eingestellten APIs setRetainInstance() oder getRetainInstance() verwenden. (#140, b/153737954)
  • detectSetUserVisibleHint() erkennt, wenn Sie die verworfene setUserVisibleHint() API verwenden. (Nr. 136, b/153738974)
  • detectTargetFragmentUsage() erkennt, wenn Sie die eingestellten APIs setTargetFragment(), getTargetFragment() oder getTargetRequestCode() verwenden. (Nr. 139, b/153737745)

API-Änderungen

Neue Lint-Prüfungen

  • Die UseGetLayoutInflater Lint-Prüfung gibt jetzt eine Warnung aus, wenn LayoutInflater.from(Context) innerhalb einer DialogFragment verwendet wird. Sie sollten immer die getLayoutInflater()-Methode des Dialogfragments verwenden, um die entsprechende LayoutInflater zu erhalten. (#156, b/170781346)
  • Die DialogFragmentCallbacksDetector-Lint-Prüfung gibt jetzt eine Warnung aus, wenn setOnCancelListener oder setOnDismissListener in der onCreateDialog()-Methode eines DialogFragment aufgerufen wird. Diese Listener gehören dem DialogFragment selbst und Sie sollten onCancel() und onDismiss() überschreiben, um diese Callbacks zu erhalten. (Nr. 171, b/181780047, b/187524311)

Fehlerkorrekturen

  • Ab Fragment 1.3.4: Es wurde eine Regression behoben, die in Fragment 1.3.3 eingeführt wurde, wenn die ViewTreeViewModelStoreOwner.get() API mit ViewModelProvider oder die Jetpack-Compose-Methode von viewModel() innerhalb eines Fragments verwendet wurde. 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: Bei Verwendung von FragmentContainerView unter API 29 werden Insets nicht mehr unbegrenzt weitergeleitet. Dadurch werden Probleme mit den Instanzen BottomNavigationBar und FloatingActionButton behoben. (I1bb78, b/186012452)
  • Aus Fragment 1.3.4: Sie können Ihr Parcelable jetzt nach dem Beenden eines Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Von Fragment 1.3.4: Wenn in einer ViewGroup ein Übergang von gemeinsam genutzten Elementen erfolgt und für die ViewGroup transitionGroup auf "false" gesetzt ist, erfolgt der Wechsel korrekt. (I99675)

Externer Beitrag

Version 1.3

Version 1.3.6

21. Juli 2021

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

Fehlerkorrekturen

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

Aktualisierung der Abhängigkeit

Version 1.3.5

16. Juni 2021

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

Fehlerkorrekturen

  • Eine Regression bei Übergängen von gemeinsam genutzten Elementen, die in Fragment 1.3.4 von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten jetzt Übergangsgruppen (entweder direkt über transitionGroup="true" oder indirekt über transitionName oder background) und gemeinsam genutzte Elemente geben keine IndexOutOfBoundsException mehr aus. (I16484, b/188679569, b/188969304)

Version 1.3.4

18. Mai 2021

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

Fehlerkorrekturen

  • Es 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() innerhalb eines Fragments bei Verwendung von Hilt eingeführt wurde. In diesen Anwendungsfällen wird jetzt das von Ihrem Fragment bereitgestellte ViewModelProvider.Factory korrekt verwendet, wenn es getDefaultViewModelProviderFactory() überschreibt (wie bei @AndroidEntryPoint-annotierten Fragmenten). 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)
  • Wenn FragmentContainerView unter API 29 verwendet wird, werden Einsätze nicht mehr unbegrenzt weitergeleitet. Dadurch werden Probleme mit den Instanzen BottomNavigationBar und FloatingActionButton behoben. (I1bb78, b/186012452)
  • Sie können Ihr Parcelable jetzt nach dem Beenden eines Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
  • Wenn transitionGroup beim Wechsel in einer ViewGroup auf "false" gesetzt ist, erfolgt der Wechsel korrekt. (I99675)

Version 1.3.3

21. April 2021

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

Neue Funktionen

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

Fehlerkorrekturen

  • Es wurde eine in Fragment 1.3.2 eingeführte Regression behoben, die dazu führte, dass popEnter-Animationen nicht ausgeführt wurden, wenn ein FragmentTransaction mit einem setPrimaryNavFragment-Vorgang per Pop-up übergegangen wurde, wie z. B. diejenigen, die von NavHostFragment verwendet wurden. (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)

Neue Fehlerkorrekturen im 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 den popBackStack()- und den commit()-Vorgang zusammen ausführen, wird durch den letzten Vorgang jetzt die Richtung für alle Animationen festgelegt, anstatt nur noch einige Pop-Animationen und einige Animationen auszuführen. (I7072e, b/181142246)
  • In Ansichten innerhalb einer Hierarchie mit gemeinsam genutzten Elementen wird der Übergangsname nicht mehr gelöscht, wenn ein Übergang in ein gemeinsam genutztes Element erfolgt. (I4d4a6, b/179934757)

Aktualisierung der Abhängigkeiten

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

Version 1.3.1

10. März 2021

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

Neue Funktionen

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

Fehlerkorrekturen

  • Fragmente, die mithilfe von FragmentContainerView zu einer bereits RESUMED-Aktivität aufgestiegen sind, werden jetzt nach einer Konfigurationsänderung korrekt angezeigt. (Ie14c8, b/180538371)
  • Am Ende des Fragments toString() befindet sich kein zusätzliches } mehr (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).

Neue Fehlerkorrekturen im State Manager

  • Ein Speicherleck in Fragmenten 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 Layout des Fragments beginnen, erreichen jetzt RESUMED (Ic11e6, b/180825150).
  • Fragmente, die mit dem Tag <fragment> aufgebläht wurden, erreichen jetzt immer RESUMED (I452ac, (I9fa49).

Aktualisierung der Abhängigkeiten

Version 1.3.0

10. Februar 2021

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

Große Ä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: Die in Activity 1.2.0 eingeführte ActivityResultRegistry API wird jetzt unterstützt, um Abläufe mit startActivityForResult()+onActivityResult() und requestPermissions()+onRequestPermissionsResult() zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Zusätzlich werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie im aktualisierten Abschnitt Ergebnisse aus einer Aktivität abrufen.

    • In dieser Version wurden mehrere Probleme im Zusammenhang mit ungültigen Anforderungscodes und dem Senden von Berechtigungsanfragen behoben, die verhindern, dass die Activity Result API in früheren Versionen von FragmentActivity funktioniert. Sie müssen ein Upgrade auf Fragment 1.3.0 ausführen, um die Activity Result APIs in einem FragmentActivity oder AppCompatActivity verwenden zu können.
  • Fragment Result API: Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf FragmentManager hinzugefügt. Dies funktioniert für Hierarchiefragmente (übergeordnet/untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur dann an Ihr Fragment gesendet werden, wenn es mindestens den Wert STARTED hat. 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. Eine neue FragmentOnAttachListener wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren von onAttachFragment() an separate, testbare Listener und Unterstützung für das Hinzufügen eines Listeners zu FragmentManagers, mit Ausnahme des direkten untergeordneten FragmentManagers.

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

    • 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 anfänglichen Lifecycle.State, um das Bestätigen des Fragmentstatus zu unterstützen, bevor zum ersten Mal zu jeder Lifecycle.State gewechselt wird.
    • Es gibt jetzt eine Alternative zur FragmentScenario API von onFragment in Form der Kotlin-verbesserten Erweiterungsmethode withFragment, mit der Sie einen Wert zurückgeben können. Insbesondere werden im gegebenen Block ausgelöste Ausnahmen noch einmal ausgelöst.
  • 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.

  • Änderungen an der TRANSIT_-Animation: Die Standardeffekte des Fragments, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE, verwenden jetzt Animator anstelle von Animation. Die zum Bau dieser Animatoren verwendeten Ressourcen sind jetzt privat.

  • Einstellung von setRetainInstance(): Die Methode setRetainInstance() für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten des Zustands, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Auf diese Weise können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den spezifischen Status, den sie beibehalten möchten, separat halten. So wird eine gemeinsame Quelle von Datenlecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor des ViewModel und des onCleared()-Callbacks, den es 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. Siehe Von ViewPager zu ViewPager2 migrieren.

Version 1.3.0-rc02

27. Januar 2021

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

Fehlerkorrekturen

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

Neue Fehlerkorrekturen im State Manager

  • Die Ansicht Lifecycle des Fragments verarbeitet jetzt ordnungsgemäß Fälle, in denen die Ansicht des Fragments zerstört wird, bevor das Lifecycle CREATED erreicht. Ausnahmen wie „Kein Ereignis ab INITIALIZED“ werden vermieden. (eda2bd, b/176138645)
  • Fragmente mit einem Animator 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 wurden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

Fehlerkorrekturen

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

Neue Fehlerkorrekturen im State Manager

  • Ein Leck und ein visuelles Artefakt wurden behoben, wenn einem FragmentContainerView ein Fragment mit einem Animation hinzugefügt und dieses anschließend mit einem Pop-Vorgang unterbrochen wurde. (I952d8)
  • Es wurde ein Problem behoben, bei dem die Ansicht des Fragments in der Ansichtshierarchie verbleibt, wenn sie während der Methoden onCreate() oder onViewCreated() ersetzt wurde. (I8a7d5)
  • Der Fokus wird jetzt ordnungsgemäß in den Stammansichten der Fragmente wiederhergestellt, wenn sie fortgesetzt werden. (Ifc84b)
  • Wenn Sie Pop- und Ersetzungsvorgänge in derselben Fragmenttransaktion kombinieren, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691).

Version 1.3.0-beta02

2. Dezember 2020

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

Neue Funktionen

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

Änderungen im Verhalten

  • FragmentContainerViews, die ein Fragment nicht mithilfe des Attributs class oder android:name in die Höhe treiben, können jetzt außerhalb von FragmentActivity verwendet werden. (Id4397, b/172266337)
  • Wenn Sie versuchen, den maximalen Lebenszyklus eines Fragments auf DESTROYED festzulegen, wird jetzt ein IllegalArgumentException ausgelöst (Ie7651, b/170765622).
  • Beim Initialisieren eines Fragmentszenarios mit dem Status DESTROYED wird jetzt ein IllegalArgumentException ausgelöst (I73590, b/170765622).

Neue Fehlerkorrekturen im 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, bei dem Fragmente mit einem Exit-Animation nicht ordnungsgemäß gelöscht wurden. (I83d65)
  • Fragmente, deren Auswirkungen umgekehrt sind, werden jetzt korrekt abgebrochen und mit dem richtigen Eintrittseffekt neu gestartet. (I62226, b/167092035)
  • Der Exit Animator einer hide() wurde nicht ausgeführt. Dieses Problem wurde behoben. (Id7ffe)
  • Fragmente werden jetzt korrekt angezeigt, wenn sie verschoben wurden, und dann sofort gestartet. (Ie713b, b/170022857)
  • Fragmente, die ihre fokussierte Ansicht während einer Animation entfernen, versuchen nicht mehr, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie RESUMED erreichen (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 wurden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

Änderungen im Verhalten

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

Fehlerkorrekturen

  • Fragmente, die mit dem Tag <fragment> aufgebläht wurden, warten nun ordnungsgemäß, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie zu STARTED (I02f4c) übergehen.
  • Bei sichtbaren Fragmenten und dann bei setMaxLifecycle() bis CREATED wird der Exit-Effekt jetzt korrekt ausgeführt. (b/165822335)
  • Das Entfernen eines getrennten Fragments, das nicht dem Back Stack hinzugefügt wurde, verursacht kein Speicherleck mehr. Mit freundlicher Genehmigung von Nicklas Ansman Giertz! (b/166489383)
  • Aktive Fragmente haben jetzt immer einen Nicht-Null-FragmentManager und Fragmente mit einem Nicht-Null-FragmentManager werden immer als aktiv angesehen. (aosp/1422346)
  • Für die Standardeffekte des Fragments, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE und TRANSIT_FRAGMENT_FADE, wird jetzt Animator anstelle von Animation verwendet. (b/166155034)

Neue Fehlerkorrekturen im State Manager

  • Fragmente stellen jetzt ihren Ansichtsfokus ab sofort wieder her, bevor die Animation gestartet wird. (ICC256)
  • Fragmente, die nur einen Übergang von gemeinsam genutzten Elementen haben, schließen ihre Spezialeffekte jetzt ordnungsgemäß ab. Das heißt, sie werden in ihren endgültigen Zustand versetzt (Iaebc7, b/166658128).
  • Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie gelöscht werden. (ID5876)
  • Der neue Zustandsmanager entfernt nun konsequent die bestehende Fragmentansicht, bevor die neue hinzugefügt wird. (I41a6e)
  • Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie also die Ansicht eines aufrufenden Fragments auf INVISIBLE setzen, bevor die Animation beginnt, bleibt sie unsichtbar. (b/164481490)
  • Fragmente priorisieren jetzt Animators gegenüber Animations, was bedeutet, dass ein Fragment mit beiden nur den Animator ausführt und das Animation ignoriert. (b/167579557)
  • Der neue Zustandsmanager sorgt nicht mehr dafür, dass Fragmente bei der Eingabe von Animationen blinken. (b/163084315)

Bekanntes Problem

Wenn Sie den neuen Zustandsmanager verwenden und während eines Spezialeffekts auf „Zurück“ drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt, was zu einem leeren Bildschirm führt. (b/167259187, b/167092035, b/168442830)

Version 1.3.0-alpha08

19. August 2020

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

Neuer State Manager

Diese Version umfasst eine umfassende Refaktorierung der internen Statusverwaltung von FragmentManager, die sich auf die Weiterleitung von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung verschobener Transaktionen auswirkt. Dies ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost Fragments: Rebuilding the Internals. (b/139536619, b/147749580)

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

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

  • Das vorherige Fragment eines replace-Vorgangs wird nun korrekt angehalten, bevor das neue Fragment gestartet wird. (b/161654580)
  • Fragmente verhindern jetzt, dass mehrere konkurrierende Animationen auf denselben Fragmenten stattfinden. Dadurch werden Fälle vermieden, in denen ein Animation alle Transition-Effekte überschreiben würde oder sowohl ein Animator als auch ein Transition bei einem einzelnen Fragment ausgeführt werden. (b/149569323)
  • enterTransition und exitTranstion aller Fragmente, die ein- und wieder verlassen, werden jetzt ausgeführt und nicht mehr nur das letzte eintretende und das erste verlassende Fragment. (b/149344150)
  • Verschobene Fragmente bleiben nicht mehr im Status CREATED hängen, sondern werden stattdessen zusammen mit anderen Fragmenten in STARTED verschoben. (b/129035555)
  • Es wurde ein Problem behoben, bei dem FragmentManager Vorgänge in falscher Reihenfolge ausführte, wenn eine verschobene neu angeordnete Transaktion mit einer nicht neu angeordneten 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 nicht mehr onCreateView() für Fragmente auf, die gelöscht werden, wenn das Fragment sie ersetzt. (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 angibt, dass dies nicht zulässig ist, anstatt nach einer Konfigurationsänderung unbemerkt keine Ergebnisse zu liefern. (b/162255449)
  • FragmentActivity verwendet jetzt die in Activity 1.2.0-alpha08 eingeführte OnContextAvailableListener API, um den Status von FragmentManager wiederherzustellen. Alle Listener, die Unterklassen von FragmentActivity hinzugefügt werden, werden nach diesem Listener ausgeführt. (I513da)

Fehlerkorrekturen

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

Bekanntes Problem

  • Wenn Sie den neuen Statusmanager verwenden, führt das direkte Festlegen der Sichtbarkeit der Stammansicht des Fragments nach onViewCreated() und vor onResume() dazu, dass die von Ihnen festgelegte Sichtbarkeit von FragmentManager überschrieben wird, der 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 wurden veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.

Neue Funktionen

  • FragmentScenario unterstützt jetzt das Festlegen eines anfänglichen Lebenszyklusstatus von CREATED, STARTED oder RESUMED, anstatt das Fragment immer in den Status RESUMED zu verschieben. (b/159662750)
  • Der FragmentScenario API von onFragment wurde eine Alternative in Form der mit Kotlin reifizierten Erweiterungsmethode withFragment hinzugefügt, mit der Sie einen Wert zurückgeben können. Insbesondere werden im gegebenen Block ausgelöste Ausnahmen noch einmal ausgelöst. (b/158697631)

Änderungen im Verhalten

  • 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. (b/156527405)
  • Der 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 das Aufrufen von clearFragmentResultListener wird der Lebenszyklus-Beobachter jetzt ordnungsgemäß gelöscht. (b/159274993)

Version 1.3.0-alpha06

10. Juni 2020

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

Neue Funktionen

  • Der onAttachFragment()-Callback für FragmentActivity und Fragment wurde eingestellt. Eine neue FragmentOnAttachListener wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren von onAttachFragment() an separate, testbare Listener und Unterstützung für das Hinzufügen eines anderen Listeners zu FragmentManagers als dem direkten untergeordneten FragmentManager. (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)
  • Es wurde ein Problem behoben, bei dem die Lint-Prüfung UseRequireInsteadOfGet die verkettete Nutzung der Operatoren ?. und !! nicht korrekt verarbeitet hat. (b/157677616)

Version 1.3.0-alpha05

20. Mai 2020

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

Neue Funktionen

API-Änderungen

  • Die APIs setFragmentResult() und setFragmentResultListener() verwenden jetzt ein Bundle bzw. FragmentResultListener, das nicht null ist. 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 eine Lambda-Funktion verwenden, sind jetzt als inline gekennzeichnet. (b/155323404)

Änderungen im Verhalten

  • 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 über den No-Argument-Konstruktor Ihrer abgeleiteten Klassen aufgerufen werden sollten, wenn die Standardeinstellung FragmentFactory verwendet wird. (b/153042497)

Version 1.3.0-alpha04

29. April 2020

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

Neue Funktionen

  • Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf FragmentManager hinzugefügt. Dies funktioniert für Hierarchiefragmente (übergeordnet/untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur dann an Ihr Fragment gesendet werden, wenn es mindestens den Wert STARTED hat. (b/149787344)

API-Änderungen

  • Die Zielfragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
  • Die APIs startActivityForResult()/onActivityResult() und requestPermissions()/onRequestPermissionsResult() für Fragment wurden eingestellt. Verwende die Activity Result APIs. (aosp/1290887)
  • Nicht abwärtskompatible Änderung von 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. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. (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-Problem wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einer DialogFragment mit FragmentContainerView hinzugefügt wurde. (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 wurden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

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

Abhängigkeitsänderungen

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

Version 1.3.0-alpha02

18. März 2020

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

Neue Funktionen

  • Die in Activity 1.2.0-alpha02 eingeführte ActivityResultRegistry API wird jetzt unterstützt, um die Abläufe startActivityForResult()+onActivityResult() und requestPermissions()+onRequestPermissionsResult() zu verarbeiten, ohne die Methoden im Fragment zu überschreiben. Zusätzlich werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie im aktualisierten Abschnitt Ergebnisse aus einer Aktivität abrufen. (b/125158199)

API-Änderungen

  • DialogFragment bietet jetzt einen Konstruktor, der einen @LayoutRes-Wert verwendet, der das Layout angibt, das durch onCreateView() standardmäßig aufgebläht werden soll. (b/150327080)
  • Die Methode onActivityCreated() wurde eingestellt. Code, der die Ansicht des Fragments berührt, sollte in onViewCreated() erfolgen, das direkt vor onActivityCreated() aufgerufen wird. Anderer Initialisierungscode sollte sich in onCreate() befinden. 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, der beim Aufrufen von getLayoutInflater() aus onCreateDialog() zu einem StackOverflowError führte, wurde behoben. (b/117894767, aosp/1258664)
  • Von Fragment 1.2.3: Der Umfang der im Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Von Fragment 1.2.3: Falsch positive Fehler in der UseRequireInsteadOfGet-Lint-Prüfung 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 wurden veröffentlicht. 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 Beibehalten des Zustands, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Auf diese Weise können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den spezifischen Status, den sie beibehalten möchten, separat halten. So wird eine gemeinsame Quelle von Datenlecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor des ViewModel und des onCleared()-Callbacks, den es 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

  • Fragment ProGuard-Regeln behalten jetzt korrekt nur die verwendeten Fragment-Standardkonstruktorenklassen bei, die anstelle aller Fragment-Instanzen verwendet werden. Dadurch wird eine im Fragment 1.2.1 eingeführte Regression behoben. (b/149665169
  • Die in Fragment 1.2.2 hinzugefügten require___()-Lint-Regeln führen bei lokalen Variablen, die denselben Namen wie die verdeckten Kotlin-Attributnamen haben, nicht mehr falsch-positiv (d.h. view) (b/149891163)
  • FragmentContainerView gibt bei Verwendung der Layoutvorschau in Android Studio keinen UnsupportedOperationException mehr aus. (b/149707833)
  • Beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, wurden nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung gelöscht. Dieses Problem wurde behoben. (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. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. Dies wurde zuvor in Fragment 1.3.0-alpha04 veröffentlicht. (b/154645875)
  • Wenn setMenuVisibility(false) für ein Fragment aufgerufen wird, ändert sich die Sichtbarkeit der Menüs, die von seinen untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt. Dies wurde zuvor in Fragment 1.3.0-alpha04 veröffentlicht. (b/153593580)

Version 1.2.4

Version 1.2.4

1. April 2020

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

Fehlerkorrekturen

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

Version 1.2.3

Version 1.2.3

18. März 2020

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

Fehlerkorrekturen

  • Es wurde ein Fehler in DialogFragment behoben, der eine StackOverflowError verursachte, wenn getLayoutInflater() aus onCreateDialog() aufgerufen wurde. (b/117894767, aosp/1258665)
  • Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
  • Falsch positive Ergebnisse in der UseRequireInsteadOfGet-Lint-Prüfung bei Verwendung eines lokalen Variablennamens, der den Kotlin-Attributnamen verdeckt, wurde behoben. (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 wurden veröffentlicht. Version 1.2.2 enthält diese Commits.

Neue Lint-Prüfungen

  • Lint empfiehlt, die viewLifecycleOwner als LifecycleOwner zu verwenden, um OnBackPressedDispatcher in onCreateView(), onViewCreated() und onActivityCreated() aufzurufen. (b/142117657)
  • Es wurde eine neue Lint-Prüfung hinzugefügt, die bestätigt, dass Sie beim Verwenden des Artefakts fragment-testing den richtigen 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 Fragment ProGuard-Dateien wurden behoben, um R8-Warnungen zu vermeiden (b/148963981).
  • Die vorhandene Lint-Prüfung wurde verbessert, sodass viewLifecycleOwner bei Verwendung von observe zur Verarbeitung der Erweiterungsmethodenversion livedata-ktx von observe vorgeschlagen wird. (b/148996309)
  • Die Formatierung bei vielen 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

  • Bei Fragmenten, die über die Methoden add und replace hinzugefügt werden, die eine Class-Instanz (oder die Kotlin-reified-Version) verwenden, wird der Standardkonstruktor jetzt von ProGuard beibehalten. (b/148181315)
  • FragmentStatePagerAdapter und FragmentPagerAdapter fangen beim Ausführen von finishUpdate() keine von FragmentManager ausgelösten Ausnahmen mehr ab. (aosp/1208711)
  • FragmentManager.findFragment() funktionierte nicht mit Fragmenten, die über das Tag <fragment> hinzugefügt wurden. (b/147784323)
  • Fragmente, die mit dem <fragment>-Tag aufgebläht wurden, erhalten jetzt immer einen Aufruf von onInflate() vor onCreate(), wenn sie sich im Layout befinden. (aosp/1215856)
  • Durch das Aufrufen von toString() für eine FragmentManager-Instanz wird kein NullPointerException mehr ausgelöst, wenn die Aktivität bereits gelöscht wurde. (b/148189412)

Abhängigkeitsänderungen

Version 1.2.0

Version 1.2.0

22. Januar 2020

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

Wichtige Änderungen seit Version 1.1.0

  • FragmentContainerView: FragmentContainerView ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Er ersetzt die Verwendung von FrameLayout oder anderen Layouts. Außerdem werden dieselben class-, android:name- und optionalen android:tag-Werte wie das <fragment>-Tag unterstützt. Zum Hinzufügen dieses ersten Fragments wird jedoch eine normale FragmentTransaction verwendet, und nicht der von <fragment> verwendete benutzerdefinierte Codepfad.
  • onDestroyView()-Timing: Fragmente warten jetzt auf Exit-Animationen, Exit-Framework-Übergänge und Beenden von AndroidX-Übergängen (bei Verwendung von Übergang 1.3.0), bevor sie onDestroyView() aufrufen.
  • Klassenbasiertes add() und replace(): Es wurden neue Überlastungen von add() und replace() für FragmentTransaction hinzugefügt, die Class<? extends Fragment> und optionale Bundle von Argumenten annehmen. Diese Methoden verwenden Ihre FragmentFactory, um eine Instanz des hinzuzufügenden Fragments zu erstellen. Kotlin-Erweiterungen mit reifizierten Typen (z. B. fragmentTransaction.replace<YourFragment>(R.id.container)) wurden ebenfalls fragment-ktx hinzugefügt.
  • Lifecycle ViewModel SavedState-Integration: 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 durch eine einzelne getParentFragmentManager()-Methode ersetzt, die das Nicht-Null-FragmentManager-Objekt zurückgibt, dem das Fragment hinzugefügt wird. Mit isAdded() können Sie feststellen, ob ein Aufruf sicher ist.
  • Einstellung von FragmentManager.enableDebugLogging(): Die statische Methode FragmentManager.enableDebugLogging wurde verworfen. FragmentManager berücksichtigt jetzt Log.isLoggable() für das Tag FragmentManager, sodass Sie entweder das DEBUG- oder VERBOSE-Logging aktivieren können, ohne Ihre App neu zu kompilieren.

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name auf einem 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. (b/142601969)
  • Wenn du ein NavHostFragment mit class oder android:name in XML mit FragmentContainerView hinzufügst, kannst du findNavController() nicht in onCreate() deiner Aktivitäten verwenden. (b/142847973)

Version 1.2.0-rc05

8. Januar 2020

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

Fehlerkorrekturen

  • Eine Regression in Fragment 1.2.0-rc04 bei Verwendung des <fragment>-Tags, die dazu führte, dass onViewCreated() beim Löschen der Aktivität falsch aufgerufen wurde, wurde behoben. (b/146290333)
  • Bei Fragmenten, die mit dem <fragment>-Tag hinzugefügt wurden, werden jetzt auch ohne Konfiguration alle Fragmente gelöscht, auch wenn sie nur manchmal im Layout vorhanden sind (d.h. nur in Ihrem Layout im Querformat). Infolgedessen werden diese Fragmente jetzt korrekt zu CREATED verschoben, auch wenn sie nicht in Ihrem Layout enthalten sind. Sie werden nicht instanziiert, durchlaufen jedoch keine Lebenszyklusmethoden. (b/145769287)

Version 1.2.0-rc04

18. Dezember 2019

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

Fehlerkorrekturen

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

Version 1.2.0-rc03

4. Dezember 2019

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

Fehlerkorrekturen

  • 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 gestoppt, wenn die enthaltende Aktivität onSaveInstanceState() aufruft. (b/144380645)
  • Es wurde ein Problem behoben, bei dem Ansichten fälschlicherweise als INVISIBLE markiert wurden, nachdem ein ausgeblendetes Fragment als Pop-up angezeigt wurde. (b/70793925)
  • Übergänge für gemeinsam genutzte Elemente in Fragmenten verarbeiten jetzt Ansichten, die gedreht, skaliert usw. wurden. (b/142835261)

Aktualisierungen der Dokumentation

  • Die Dokumentation zur Einstellung von setUserVisibleHint() wurde klarer formuliert. (b/143897055)
  • Die Dokumentation zu setFragmentFactory() und getFragmentFactory() wurde verbessert. Jetzt wird deutlicher, dass sich das Festlegen eines FragmentFactory auch auf untergeordnete FragmentManagers auswirkt. (aosp/1170095)

Abhängigkeitsänderungen

  • Fragmente sind jetzt abhängig vom Lebenszyklus 2.2.0-rc03, dem gespeicherten Zustand der Ansichtsmodell 1.0.0-rc03 und der Aktivität 1.1.0-rc03.

Version 1.2.0-rc02

7. November 2019

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

Fehlerkorrekturen

  • In Kotlin verwendet 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 wurden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • FragmentContainerView unterstützt jetzt zusätzlich zu android:name das class-Attribut, was der Funktionalität des <fragment>-Tags entspricht. (b/142722242)
  • Es wurde eine neue Lint-Prüfung hinzugefügt, die sicherstellt, dass Sie getViewLifecycleOwner() verwenden, wenn LiveData von onCreateView(), onViewCreated() oder onActivityCreated() beobachtet wird. (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 als Teil der Inflation hinzu, damit findFragmentById() und findFragmentByTag() sofort funktionieren. (b/142520327)
  • Ein IllegalStateException-Fehler in FragmentContainerView aufgrund der Speicherung des Status behoben. (b/142580713)
  • Ein UnsupportedOperationException-Fehler in FragmentContainerView bei verschleierter FragmentContainerView-Klasse wurde behoben. (b/142657034)

Bekannte Probleme

  • Fragmente, auf die nur über das Attribut class oder android:name auf einem 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 wurden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem onInflate() des Fragments nicht die richtigen Attribute von FragmentContainerView erhielt, wodurch Fälle wie NavHostFragment nicht mehr funktionierten. (b/142421837)

Version 1.2.0-beta01

9. Oktober 2019

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

Neue Funktionen

  • FragmentContainerView unterstützt das Hinzufügen eines anfänglichen Fragments mit zusätzlicher Unterstützung für die XML-Attribute android:name und optional android:tag. Im Gegensatz zum <fragment>-Tag verwendet FragmentContainerView eine normale FragmentTransaction im Hintergrund, um das anfängliche Fragment hinzuzufügen. Dadurch sind weitere FragmentTransaction-Vorgänge für die FragmentContainerView möglich und die Ansichtsbindung kann für das Layout verwendet werden. (b/139830628, b/141177981)
  • Fragmente enthalten jetzt eine Lint-Warnung, die eine schnelle Korrektur bietet, um <fragment> durch FragmentContainerView zu ersetzen. (b/139830056)

Fehlerkorrekturen

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

Bekannte Probleme

  • onInflate() des Fragments erhalten nicht die richtigen Attribute von FragmentContainerView, wodurch Fälle wie NavHostFragment nicht mehr funktionieren. (b/142421837)

Version 1.2.0-alpha04

18. September 2019

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

API-Änderungen

  • Die Methoden getFragmentManager() und requireFragmentManager() für Fragment wurden verworfen und durch eine einzelne getParentFragmentManager()-Methode ersetzt, die das FragmentManager-Objekt zurückgibt, dem das Fragment hinzugefügt wird, dem das Fragment hinzugefügt wird. Mit isAdded() können Sie feststellen, 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, sodass Sie entweder das DEBUG- oder VERBOSE-Logging aktivieren können, ohne Ihre App neu zu kompilieren. (aosp/1116591)

Fehlerkorrekturen

  • Fragmente werden jetzt ordnungsgemäß zerstört, während Exit-Animationen auf anderen Fragmenten 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

Fehlerkorrekturen

  • FragmentContainerView kehrt jetzt die Zeichenreihenfolge korrekt um, wenn Fragmente aus dem Back Stack 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)
  • Fragmente warten jetzt (zusätzlich zu Animationen, die in Fragment 1.2.0-alpha02 behoben wurden) auf den Abschluss von Übergängen, bevor onDestroyView() abgefertigt wird. (b/138741697)

Version 1.2.0-alpha02

7. August 2019

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

Neue Funktionen

  • SavedStateViewModelFactory ist jetzt die Standard-Factory, die verwendet wird, wenn by viewModels(), by activityViewModels(), der ViewModelProvider-Konstruktor oder ViewModelProviders.of() mit einem Fragment verwendet wird. (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, wodurch die Verwendung von FrameLayout usw. ersetzt wird, da dadurch Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinfügungen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)
  • Eine statische FragmentManager.findFragment(View)-Methode wurde hinzugefügt, um das enthaltende Fragment aus einer durch ein Fragment aufgeblähten Ansicht abzurufen. 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. Diese Methoden verwenden Ihre FragmentFactory, um eine Instanz des hinzuzufügenden Fragments zu erstellen. 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 den Navigationspfad-Titel unter FragmentTransaction und FragmentManager.BackStackEntry wurden eingestellt. (b/138252944)
  • Die Methode setTransitionStyle für FragmentTransaction wurde eingestellt. (aosp/1011537).
  • Viele der Methoden in FragmentManager sind nicht mehr abstract. FragmentManager selbst bleibt abstract und sollte nicht direkt instanziiert oder erweitert werden. 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)
  • Von Fragment 1.1.0-rc03: Ein Problem wurde behoben, bei dem durch mehrfaches Aufrufen von postponeEnterTransition() mit einem Zeitlimit das vorherige Zeitlimit nicht abgebrochen wurde. (b/137797118)
  • Aus Fragment 1.1.0-rc02: Ein Absturz in FragmentPagerAdapter und FragmentStatePagerAdapter beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
  • Fragmente warten jetzt, bis die Animationen beendet sind, bevor onDestroyView() gesendet wird. (b/136110528)
  • Fragmentanimationen von untergeordneten Fragmenten und deren Nachfolgerelemente werden jetzt ordnungsgemäß verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
  • Ein NullPointerException wurde behoben, bei dem Übergänge mit gemeinsam genutzten Elementen verwendet wurden und ein Pop-up- und Hinzufügenvorgang 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 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • FragmentManager ruft jetzt requestApplyInsets() auf, nachdem die Ansicht des Fragments angehängt wurde, und direkt vor dem Aufrufen von onViewCreated(). Dadurch wird sichergestellt, dass Ihre Ansicht immer die richtigen Einfügungen 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 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Wichtige Änderungen seit Version 1.0.0

  • fragment-testing: Das Artefakt fragment-testing bietet eine FragmentScenario-Klasse zum isolierten Testen eines Fragments. Weitere Informationen finden Sie unter Dokumentation zu Fragmenten Ihrer App testen.
  • FragmentFactory: Sie können jetzt eine FragmentFactory auf einer FragmentManager festlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Damit entfällt die strenge Anforderung eines No-Argument-Konstruktors.
  • Kotlin-Attributdelegierte für ViewModels: Das Artefakt fragment-ktx enthält jetzt zwei Kotlin-Eigenschaftsdelegierte: by viewModels() für den Zugriff auf ViewModels, die mit dem jeweiligen Fragment verknüpft sind, und by activityViewModels() für den Zugriff auf ViewModels, die der Aktivität zugeordnet sind.
  • Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie setMaxLifecycle() für eine FragmentTransaction aufrufen. 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: Abgeleitete Klassen von FragmentActivity können jetzt optional einen Konstruktor für FragmentActivity aufrufen, der eine R.layout-ID annimmt, um das Layout anzugeben, das als Inhaltsansicht als Alternative zum Aufrufen von setContentView() in onCreate() festgelegt werden soll. Dies ändert nichts an der Anforderung, dass Ihre Unterklasse einen No-Argument-Konstruktor haben muss.
  • Fragment LayoutId-Konstruktor: Abgeleitete Klassen von Fragment können jetzt optional einen Konstruktor für Fragment aufrufen, der eine R.layout-ID verwendet. Diese gibt das Layout an, das für dieses Fragment als Alternative zum Überschreiben von onCreateView() verwendet werden soll. Das aufgeblähte Layout kann in onViewCreated() konfiguriert werden.
  • Mit Zeitlimit verschieben: Eine neue Überlastung von postponeEnterTransition() wurde hinzugefügt, die ein Zeitlimit erfordert.

Version 1.1.0-rc04

7. August 2019

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

Fehlerkorrekturen

  • Verschobene Übergänge in Fragmenten werden jetzt korrekt per Pop-up abgebrochen. (b/138251858)

Version 1.1.0-rc03

19. Juli 2019

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

Fehlerkorrekturen

  • Durch mehrmaliges Aufrufen von postponeEnterTransition() mit einem Zeitlimit wurden frühere Zeitüberschreitungen nicht abgebrochen. Dieses Problem wurde behoben. (b/137797118)

Version 1.1.0-rc02

17. Juli 2019

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

Fehlerkorrekturen

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

Version 1.1.0-rc01

2. Juli 2019

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

Fehlerkorrekturen

  • Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn 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 wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

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

Version 1.1.0-alpha09

16. Mai 2019

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

API-Änderungen

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

Fehlerkorrekturen

  • Menüelemente, die von einem untergeordneten Fragment aufgebläht wurden, werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013

Version 1.1.0-alpha08

7. Mai 2019

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

Diese Version ist mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 nicht 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 endgültigen Zustand erreichen. b/131557151
  • Bei Verwendung von setMaxLifecycle(Lifecycle.State.CREATED) wird die Ansicht von Fragmenten ordnungsgemäß zerstört. aosp/954180

Version 1.1.0-alpha07

25. April 2019

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

Neue Funktionen

  • Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie setMaxLifecycle() für ein FragmentTransaction aufrufen. Dies ersetzt das 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) unter FragmentScenario kann jetzt nur auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)

Änderungen im Verhalten

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem ein <fragment>-Tag in XML und der contentLayoutId-Konstruktor von FragmentActivity oder AppCompatActivity verwendet wurde. (b/129907905)
  • Ein Problem wurde behoben, bei dem Fragmente im Back Stack nach einer Konfigurationsänderung nicht mindestens zu CREATED verschoben wurden, wodurch ViewModels und untergeordnete beibehaltene Fragmente nicht korrekt entsorgt wurden. (b/129593351)
  • Ein Absturz in restoreSaveState wurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824)
  • Es wurden Probleme behoben, bei denen ein OnBackPressedCallback, das mit einem Fragmentlebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn das FragmentManager einen Back Stack hätte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209)
  • LAYER_TYPE_HARDWARE wird für Animationen nicht mehr von Fragmenten 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 ausgelöste Ausnahmen enthalten jetzt den Namen des Fragments in der Nachricht. (b/67759402)

API-Änderungen

  • Fragment und FragmentActivity enthalten jetzt einen zweiten Konstruktor, der einen @LayoutRes int verwendet, der das vorherige Verhalten beim Annotieren der Klasse mit @ContentView ersetzt. Dieser Ansatz funktioniert sowohl in Anwendungs- als auch in Bibliotheksmodulen. (b/128352521)
  • onActivityResult() von FragmentActivity ist jetzt korrekt als @CallSuper gekennzeichnet. (b/127971684)
  • Die Methode instantiate der FragmentFactory, die ein Argument Bundle verwendet, wurde eingestellt. Apps sollten die neue instantiate-Überlastung verwenden, die kein Bundle verwendet. (b/128836103)
  • FragmentScenario-Methoden sind jetzt korrekt mit @StyleRes annotiert. (aosp/924193)
  • FragmentTabHost wurde verworfen. (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 blinkte. (b/129405432)
  • Das Problem, dass das primäre Navigationsfragment nach einer Reihe von Operationen mit popBackStack+Ersetzen+popBackStack verloren ging, wurde behoben. (b/124332597)
  • Es wurde ein Problem behoben, bei dem beim Wiederherstellen des Fragmentstatus @ContentView-Konstruktoren für Ihre Aktivität verwendet wurden. (b/127313094)
  • Die Logik von setTargetFragment() beim Ersetzen eines vorhandenen Zielfragments durch ein Fragment, das noch nicht an FragmentManager angehängt wurde, wurde korrigiert. (aosp/932156)

Version 1.1.0-alpha05

13. März 2019

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

Neue Funktionen

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

Verhaltensänderungen

  • Durch das Aufrufen von remove(), hide(), show(), detach() und setPrimaryNavigationFragment() mit einem Fragment, das an einen anderen FragmentManager angehängt ist, wird jetzt ein IllegalStateException ausgelöst, statt automatisch einen Fehler zu verursachen (aosp/904301).

Fehlerkorrekturen

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

Version 1.1.0-alpha04

7. Februar 2019

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

Neue Funktionen

  • Die @ContentView-Klassenanmerkung wird jetzt unterstützt, mit der Sie angeben können, welche Layout-XML-Datei als Alternative zum Überschreiben von onCreateView() aufgeblasen werden soll. Es empfiehlt 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 im Fragment gehostete Optionsmenüs zu testen (b/121126668).

API-Änderungen

  • Es wurde eine requireArguments()-Methode hinzugefügt, die ein @NonNull Bundle zurückgibt oder ein IllegalStateException auslöst (b/121196360).
  • Es wurde ein Hinweis hinzugefügt, dass getLifecycle(), getViewLifecycleOwner() und getViewLifecycleOwnerLiveData() nicht überschrieben werden sollten und in einer zukünftigen Version endgültig festgelegt werden. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (aosp/880714)
  • Es wurde ein Hinweis hinzugefügt, dass getViewModelStore() nicht überschrieben werden sollte und in einem zukünftigen Release endgültig gemacht wird. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (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, bei dem Zielfragmente in oder nach onDestroy() manchmal nicht verfügbar waren. (b/122312935)
  • „onDismiss()“ von DialogFragment wird jetzt vor onDestroy() aufgerufen. (aosp/874133) (aosp/890734)

Version 1.1.0-alpha03

17. Dezember 2018

Neue Funktionen

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

API-Änderungen

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

Fehlerkorrekturen

  • Korrigierte IllegalStateException: Fehler beim Speichern des Status b/120814739
  • Fragmente, die aus dem Status der gespeicherten Instanz wiederhergestellt werden, erhalten jetzt immer ein Bundle ungleich null [b/119794496]
  • Entfernte Fragmente verwenden das 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

  • IllegalStateException bei der Verwendung verschachtelter Fragmente im Back Stack behoben (b/119256498)
  • Das Absturzproblem bei der Verwendung von FragmentScenario.recreate() mit einem FragmentFactory (aosp/820540) wurde behoben.
  • Zielfragmente waren nicht zugänglich, nachdem das Fragment entfernt wurde (aosp/807634). Dieses Problem wurde behoben.

Version 1.1.0-alpha01

5. November 2018

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

Neue Funktionen

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

API-Änderungen

  • Die Annotationen zur Null-Zulässigkeit wurden in der Fragment API-Oberfläche erheblich erweitert.

Fehlerkorrekturen

  • Problem beheben, durch das Fragment-Vorgä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 anstelle der korrekten androidx.test:core:1.0.0 ab.