Fragment
| Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
|---|---|---|---|---|
| 13. August 2025 | 1.8.9 | - | – | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Fragment hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Cool
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 1.8
Version 1.8.9
13. August 2025
androidx.fragment:fragment-*:1.8.9 wird veröffentlicht. Version 1.8.9 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Abbrechen einer Vorhersage-Geste für die Zurück-Funktion, die einen Vorgang zum Ausblenden auslöst, dazu führte, dass die nachfolgende Geste bei Verwendung von Animators nicht richtig animiert wurde. (I0a400, b/384765586)
- Es wurde ein Fehler behoben, bei dem das oberste Fragment bei einer Kombination aus
setMaxLifecycleundpopBackStacknicht in den Status RESUMED verschoben werden konnte. (I3448b, b/406127576)
Version 1.8.8
4. Juni 2025
androidx.fragment:fragment-*:1.8.8 wird veröffentlicht. Version 1.8.8 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
FragmentManagerbeim Speichern des Status von Fragmenten, die mitsetMaxLifecycle(Lifecycle.State.INITIALIZED)hinzugefügt wurden, abgestürzt ist. Da diese Fragmente nieonCreate()durchlaufen haben, ist kein Status mehr gespeichert undonSaveInstanceState()wird nicht aufgerufen. (I6e37a)
Version 1.8.7
20. Mai 2025
androidx.fragment:fragment-*:1.8.7 wird veröffentlicht. Version 1.8.7 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
FragmentManagernach Pop- und Ersetzungsvorgängen im selben Frame nicht im richtigen Status war. Dies konnte in Verbindung mit dem Entfernen des Backstacks überpopBackStackoder die vorhersagende Zurück-Geste zu einem Absturz führen. (I50ad1) - Ein Absturz wurde behoben, der durch die Verwendung von AndroidX Transitions verursacht wurde. Dabei wurde versucht, eine nicht gestartete Transition durch schnelle, aufeinanderfolgende Fragmenttransaktionen abzubrechen. Die AndroidX Transition-Bibliothek hat den Übergangsstatus jedoch nicht richtig gelöscht. Weitere Informationen finden Sie unter b/414612221. (Ib5235)
Version 1.8.6
12. Februar 2025
androidx.fragment:fragment-*:1.8.6 wird veröffentlicht. Version 1.8.6 enthält diese Commits.
Fehlerkorrekturen
- Die
FragmentContainerView-Überschreibung vonsetOnApplyWindowInsetsListenerakzeptiert jetzt einen Null-Listener, was dem entspricht, was das Framework zulässt. (I575f0, b/282790626)
Version 1.8.5
30. Oktober 2024
androidx.fragment:fragment-*:1.8.5 wird veröffentlicht. Version 1.8.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
IllegalStateExceptiondurchsaveBackStacknur ausgelöst wurde, nachdem eine Vorhersage für die Zurück-Geste abgebrochen oder unterbrochen wurde. (I3387d, b/342419080)
Version 1.8.4
2. Oktober 2024
androidx.fragment:fragment-*:1.8.4 wird veröffentlicht. Version 1.8.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das schnelle Drücken der System-Zurück-Schaltfläche oder das schnelle Ausführen der Zurück-Geste zum Absturz von Fragmenten führte, wenn AndroidX Transitions verwendet wurde. (Ibc038, b/364804225)
- Ein Problem in Fragmenten wurde behoben, bei dem das Unterbrechen einer vorhersagenden Zurück-Geste den Fragmentmanager in einen undefinierten Zustand versetzte und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
- Es wurde ein
UninitializedPropertyAccessExceptioninAndroidFragmentbehoben, der beim dynamischen Ersetzen der Klasse auftrat, die von derAndroidFragment-Instanz verwendet wird. (I12dea)
Version 1.8.3
4. September 2024
androidx.fragment:fragment-*:1.8.3 wird veröffentlicht. Version 1.8.3 enthält diese Commits.
Fehlerkorrekturen
FragmentManagerberücksichtigt jetzt ausstehende Vorgänge korrekt, wenn die Vorhersage-Geste „Zurück“ ausgeführt wird. Dadurch sollte sichergestellt werden, dass ein System-Backup nicht mehr zu einemIndexOutOfBoundsExceptionführt. (I9ba32, b/342316801)AndroidFragmentstürzt nicht mehr ab, wenn es einer Komposition hinzugefügt wird, während der Status der enthaltenden Aktivität/des enthaltenden Fragments bereits gespeichert ist. (I985e9, b/356643968)
Version 1.8.2
24. Juli 2024
androidx.fragment:fragment-*:1.8.2 wird veröffentlicht. Version 1.8.2 enthält diese Commits.
Fehlerkorrekturen
AndroidFragmentverarbeitet jetzt Fälle richtig, in denen das übergeordnete Fragment in den Fragment-Backstack eingefügt wird. So werden Probleme vom Typ „No view found for id“ vermieden, wenn zum Fragment zurückgekehrt wird. (I94608)- Fragmente, die über die
FragmentTransaction.add-Methode mit einemViewGrouphinzugefügt werden, warten jetzt aufonContainerAvailable, bevor sie mitonStart()fortfahren. Das betrifft Nutzer dieser API, z. B.AndroidFragment. Diese Funktion wartet jetzt darauf, dassAndroidFragmentwieder in die Komposition eintritt, bevor sie durchonStart()verschoben wird. (I94608)
Version 1.8.1
26. Juni 2024
androidx.fragment:fragment-*:1.8.1 wird veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Fragmente ohne Container beim Starten einer vorhersagenden Zurück-Geste sofort
DESTROYEDwurden. Sie werden jetzt im StatusCREATEDgehalten, bis die Geste abgeschlossen ist. (If6b83, b/345244539)
Version 1.8.0
12. Juni 2024
androidx.fragment:fragment-*:1.8.0 wird veröffentlicht. Version 1.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.7.0
- Das
fragment-compose-Artefakt enthält jetzt einAndroidFragmentComposable, mit dem Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden können. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese Methode sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mitAndroidViewBindingaufgebläht wurde. - Der
onBackStackChangeCancelled-Callback auf derOnBackStackChangedListener-Schnittstelle vonFragmentManagerwird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManagerausgelöst. Dadurch wird er zeitlich an denonBackStackChangeCommitted-Callback angeglichen.
Version 1.8.0-rc01
29. Mai 2024
androidx.fragment:fragment-*:1.8.0-rc01 wird veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der
onBackStackChangeCancelled-Callback auf derFragmentManagers OnBackStackChangedListener-Schnittstelle wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManagerausgelöst. Dadurch wird das Timing desonBackStackChangeCommitted-Callbacks angeglichen. (I5ebfb, b/332916112)
Version 1.8.0-beta01
14. Mai 2024
androidx.fragment:fragment-*:1.8.0-beta01 wird veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ab Fragment
1.7.1: Die Vorhersage für die Rückwärtsbewegung wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein schwarzer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02 wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.7.0-rc02: Es wurden Logs hinzugefügt, um anzugeben, warum das Festlegen einessharedElementohne andere Übergänge nicht ausgeführt wird. (Iec48e) - Fragment
1.7.0-rc02: Ein Fehler wurde behoben, bei dem es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.8.0-alpha01
3. April 2024
androidx.fragment:fragment-*:1.8.0-alpha01 wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit dem neuen
AndroidFragmentComposablekönnen Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese kann als direkter Ersatz für AndroidViewBindingComposableverwendet werden.(b/312895363, Icf841)
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener-APIs wurde aktualisiert und enthält nun Informationen dazu, wann sie aufgerufen werden und wie sie verwendet werden sollten. (I0bfd9)
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7
Version 1.7.1
14. Mai 2024
androidx.fragment:fragment-*:1.7.1 wird veröffentlicht. Version 1.7.1 enthält diese Commits.
Fehlerkorrekturen
- Die Vorhersage für das Zurückgehen wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein leerer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.7.0
1. Mai 2024
androidx.fragment:fragment-*:1.7.0 wird veröffentlicht. Version 1.7.0 enthält diese Commits.
Unterstützung für die vorhersagende Zurück-Geste
- Fragmente unterstützen jetzt die Vorhersagefunktion für die Rückwärtsnavigation in der App, wenn
Animatoroder AndroidX Transition 1.5.0 verwendet wird. So können Nutzer mit der Zurück-Geste das vorherige Fragment aufrufen, indem sie den Animator/die Transition durchsuchen, bevor sie entscheiden, ob sie die Transaktion durch Abschluss der Geste oder durch Abbrechen bestätigen möchten.
| Übergangssystem | XML-Ressource | Unterstützt die intelligente „Zurück“-Geste |
|---|---|---|
Animation |
R.anim |
Nein |
Animator |
R.animator |
Ja |
Framework Transition |
R.transition |
Nein |
AndroidX Transition mit Transition 1.4.1 oder niedriger |
R.transition |
Nein |
AndroidX Transition mit Transition 1.5.0 |
R.transition |
Ja |
Wenn nach der Aktivierung der Vorhersage-Geste Probleme mit der Unterstützung der Vorhersage-Geste in Fragmenten auftreten, reichen Sie bitte ein Problem für Fragment ein und fügen Sie ein Beispielprojekt bei, in dem das Problem reproduziert wird. Sie können die Vorhersage für die Zurück-Geste mit FragmentManager.enabledPredictiveBack(false) im onCreate() Ihrer Aktivität deaktivieren.
FragmentManager.OnBackStackChangedListener() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.
Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content-Erweiterungsmethode für Fragment, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Version 1.7.0-rc02
17. April 2024
androidx.fragment:fragment-*:1.7.0-rc02 wird veröffentlicht. Version 1.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Logs hinzugefügt, die angeben, warum das Festlegen von
sharedElementohne andere Übergänge fehlschlägt. (Iec48e) - Es wurde ein Fehler behoben, durch den es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.7.0-rc01
3. April 2024
androidx.fragment:fragment-*:1.7.0-rc01 wird veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7.0-beta01
20. März 2024
androidx.fragment:fragment-*:1.7.0-beta01 wird veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallbackwird jetzt in Kotlin geschrieben, damit die Nullable-Eigenschaft des generischen Typs des Hosts mit der Nullable-Eigenschaft des Rückgabetyps vononGetHost()übereinstimmt. (I40af5)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem ein Fragment, das sich nicht in einem Container befindet, nie zerstört wurde, wenn ein Predictive Back-Vorgang für dieses Fragment ausgeführt wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand versetzt. (Ida0d9)
- Es wurde ein Problem in Fragmenten behoben, bei dem durch Unterbrechen eingehender Übergänge mit einer vorhersagenden Zurück-Geste die eingehende Ansicht zerstört und ein leerer Bildschirm angezeigt wurde. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7. Februar 2024
androidx.fragment:fragment-*:1.7.0-alpha10 wird veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben. Wenn die Predictive Back-Unterstützung von Fragment für
Animatoroder AndroidX Transition verwendet wurde, haben Fragments eineNullPointerExceptionvonhandleOnBackProgressedausgegeben, wenn noch nie einFragmentManager.OnBackStackChangedListenerüberaddOnBackStackChangedListenerhinzugefügt wurde. (I7c835)
Version 1.7.0-alpha09
24. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha09 wird veröffentlicht. Version 1.7.0-alpha09 enthält diese Commits.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.
Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content-Erweiterungsmethode für Fragment, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein ComposeView für Sie erstellt und die richtige ViewCompositionStrategy festgelegt. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Neue Funktionen
FragmentManager.OnBackStackChangedListener()bietet jetzt dieonBackStackChangeProgressed()undonBackStackChangeCancelled()zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen. (214b87)
Bekanntes Problem
- Wenn Sie die Unterstützung für die vorhersagende Zurück-Geste von Fragment für
Animatoroder AndroidX Transition verwenden, lösen Fragmente eineNullPointerExceptionvonhandleOnBackProgressedaus, wenn noch nie einFragmentManager.OnBackStackChangedListenerüberaddOnBackStackChangedListenerhinzugefügt wurde. Wenn Sie einen Listener manuell hinzufügen, wird der Absturz umgangen. Eine Korrektur für dieses Problem wird in der nächsten Version von Fragments verfügbar sein.
Version 1.7.0-alpha08
10. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha08 wird veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Aufräumen
- Der Workaround für die Übergangsbibliothek, der in Transition
1.5.0-alpha06behoben wurde, wurde entfernt. (I04356)
Version 1.7.0-alpha07
29. November 2023
androidx.fragment:fragment-*:1.7.0-alpha07 wird veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
NullPointerExceptionbehoben, der durch das Festlegen einer Übergangsanimation für ein gemeinsames Element und das gleichzeitige Versäumnis, auch einen enter/exitTransition festzulegen, verursacht wurde. (I8472b) - Über Fragment
1.6.2: Wenn das Fragment einesFragmentContainerViewaufgebläht wird, sind seine Status wieFragmentManager, Host und ID jetzt imonInflate-Callback verfügbar. (I1e44c, b/307427423) - Fragment
1.6.2: Wenn SieclearBackStackverwenden, um eine Gruppe von Fragmenten zu entfernen, wird dasViewModelaller verschachtelten Fragmente jetzt gelöscht, wenn dasViewModelsdes übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)
Version 1.7.0-alpha06
4. Oktober 2023
androidx.fragment:fragment-*:1.7.0-alpha06 wird veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Abhängigkeitsupdate
- „Fragments“ wurde aktualisiert, um von der neuen
animateToStartAPI abzuhängen, die in Transition1.5.0-alpha04hinzugefügt wurde.
Version 1.7.0-alpha05
20. September 2023
androidx.fragment:fragment-*:1.7.0-alpha05 wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragmente unterstützen jetzt die intelligente „Zurück“-Geste, wenn AndroidX-Übergänge verwendet werden. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Transition wechseln, bevor Sie die Transaktion über die „Fertig“-Geste bestätigen oder abbrechen. Sie müssen die Transition
1.5.0-alpha03-Version verwenden, um diese Funktion zu aktivieren. (Ib49b4, b/285175724)
Bekannte Probleme
- Derzeit gibt es ein Problem, bei dem nach dem Abbrechen einer Zurück-Geste mit einem Übergang beim nächsten Starten der Zurück-Geste der Übergang nicht ausgeführt wird und ein leerer Bildschirm angezeigt wird. Das kann an einem Problem in der Transition-Bibliothek liegen. (b/300157785). Wenn dieses Problem auftritt, melden Sie es bitte für Fragment und fügen Sie ein Beispielprojekt bei, mit dem sich das Problem reproduzieren lässt. Sie können die Vorhersage für die Zurück-Geste mit
FragmentManager.enabledPredictiveBack(false)imonCreate()Ihrer Aktivität deaktivieren.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04 wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Fragmente beim Abbrechen einer vorhersagenden Zurück-Geste nicht den richtigen Lebenszyklusstatus erreicht haben. (I7cffe, b/297379023)
- Es wurde ein Regressionsfehler behoben, durch den Animationen mit Übergängen ausgeführt werden konnten. (I59f36)
- Ein Problem wurde behoben, das beim Verwenden von „Vorhersagende Zurück-Geste“ mit Fragmenten auftrat. Wenn versucht wurde, zweimal kurz hintereinander zum vorletzten Fragment im Backstack zurückzukehren, stürzte die App ab. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03 wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der intelligenten „Zurück“-Geste dazu führte, dass das erste Fragment im Backstack des Fragmentmanagers übersprungen und die Aktivität beendet wurde, wenn die System-„Zurück“-Geste über die 3‑Schaltflächen-Navigation oder die intelligente „Zurück“-Geste verwendet wurde. (I0664b, b/295231788)
Version 1.7.0-alpha02
9. August 2023
androidx.fragment:fragment-*:1.7.0-alpha02 wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie ab API 34 Fragmente mit vorhersagbaren Zurück-Gesten verwenden und ein Übergangssystem nutzen, das keine Suche unterstützt (
Animations,Transitions), oder gar keine Übergänge, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Zurück-Aktion ausgeführt wird. (I8100c)
Version 1.7.0-alpha01
7. Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01 wird veröffentlicht. Diese Version wird in einem internen Branch entwickelt.
Neue Funktionen
- Bei Verwendung von
Animatorwird jetzt die intelligente „Zurück“-Geste in Fragmenten unterstützt. So können Sie mit der Zurück-Geste das vorherige Fragment mit Ihrem benutzerdefinierten Animator aufrufen, bevor Sie die Transaktion mit der Geste „Abgeschlossen“ bestätigen oder abbrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie die experimentelleenablePredictiveBack()verwenden undfalseübergeben.
Version 1.6
Version 1.6.2
1. November 2023
androidx.fragment:fragment-*:1.6.2 wird veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment eines
FragmentContainerViewinstanziiert wird, sind seine Status wieFragmentManager, Host und ID jetzt imonInflate-Callback verfügbar. (I1e44c, b/307427423) - Wenn Sie
clearBackStackverwenden, um eine Gruppe von Fragmenten zu entfernen, wird dasViewModelaller verschachtelten Fragmente jetzt gelöscht, wenn dasViewModelsdes übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)
Version 1.6.1
26. Juli 2023
androidx.fragment:fragment-*:1.6.1 wird veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der gespeicherte Status, der gespeichert wurde, als die Aktivität beendet, aber nicht zerstört wurde, fälschlicherweise im Cache gespeichert wurde, auch nachdem die Fragmentinstanz wieder in den Status
RESUMEDverschoben wurde. Dadurch würde der zwischengespeicherte Status wiederverwendet, wenn sich diese Fragmentinstanz im Backstack befand, als das Fragment mit der API für mehrere Backstacks gespeichert und wiederhergestellt wurde. (I71288, b/246289075)
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Activity 1.7.2 ab. Ein Problem wurde behoben, bei dem Kotlin-Nutzer
ComponentDialognicht ohne eine explizite Abhängigkeit von Activity erweitern konnten. (b/287509323)
Version 1.6.0
7. Juni 2023
androidx.fragment:fragment-*:1.6.0 wird veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Der gespeicherte Status von
Fragments wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierteParcelable-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt. Der Status wird jetzt immer in einemBundlegespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt. - Die
FragmentManager.OnBackStackChangedListener-Schnittstelle wurde um zwei zusätzliche CallbacksonBackStackChangeStartedundonBackStackChangeCommittederweitert, die mit jedemFragmentaufgerufen werden, kurz bevor sie dem Fragment-Backstack hinzugefügt bzw. daraus entfernt werden, und kurz nachdem die Transaktion übernommen wurde. FragmentStrictModehat ein neuesWrongNestedHierarchyViolationhinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht demchildFragmentManagerdes übergeordneten Elements hinzugefügt wurde.- Die APIs
FragmentundFragmentManager, dieIntentoderIntentSenderverwenden, sind jetzt korrekt mit@NonNullannotiert, um zu verhindern, dass ein Nullwert übergeben wird. Ein Nullwert würde immer sofort die entsprechenden Android-Framework-APIs zum Absturz bringen, die von diesen Methoden aufgerufen werden. DialogFragmentbietet jetzt über dierequireComponentDialog()API Zugriff auf die zugrunde liegendeComponentDialog.- Das Fragment hängt jetzt von Lifecycle
2.6.1ab. - Das Fragment ist jetzt von SavedState
1.2.1abhängig. - Das Fragment hängt jetzt von ProfileInstaller
1.3.0ab. Das
fragment-testing-manifest-Artefakt trennt die Manifesteinträge von den anderen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen
fragment-testingundandroidx.testvermieden.
Version 1.6.0-rc01
10. Mai 2023
androidx.fragment:fragment-*:1.6.0-rc01 wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
ActivityResultmit dem falschen Anforderungscode gesendet wurden, wenn mehrerestartActivityForResult-Anforderungen nacheinander gestellt wurden. (If0b9d, b/249519359) - Ein Problem wurde behoben, bei dem die
onBackStackChangeListener-Callbacks für Transaktionen gesendet wurden, die den Backstack nicht geändert haben, wenn sie mit Transaktionen kombiniert wurden, die den Backstack geändert haben. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19. April 2023
androidx.fragment:fragment-*:1.6.0-beta01 wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransitionmit einem Zeitlimit verwenden und das zurückgestellte Fragment dann ersetzen, wird es nicht mehr geleakt. (I2ec7d, b/276375110) - Die neuen
onBackStackChangeStarted- undonBackStackChangeCommitted-Callbacks senden jetzt nur noch einmal ein Fragment, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)
Version 1.6.0-alpha09
5. April 2023
androidx.fragment:fragment-*:1.6.0-alpha09 wird veröffentlicht. Version 1.6.0-alpha09 enthält diese Commits.
API-Änderungen
DialogFragmentbietet jetzt über dierequireComponentDialog()API Zugriff auf die zugrunde liegendeComponentDialog. (I022e3, b/234274777)- Die APIs für die Fragmente
commitNow(),executePendingTransactions()undpopBackStackImmediate()wurden mit@MainThreadannotiert. Das bedeutet, dass sie jetzt alle Build-Fehler auslösen, wenn sie nicht über den Hauptthread aufgerufen werden, anstatt erst zur Laufzeit zu fehlschlagen. (Ic9665, b/236538905)
Fehlerkorrekturen
- Es wurde ein Fehler in
FragmentManagerbehoben, durch den das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668) - Die Callbacks
OnBackStackChangedListeneronBackStackChangeStartedundonBackStackChangeCommittedwerden jetzt nur noch ausgeführt, wenn sich derFragmentManager-Backstack ändert. (I66055, b/274788957)
Version 1.6.0-alpha08
22. März 2023
androidx.fragment:fragment-*:1.6.0-alpha08 wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Der Zeitpunkt des
OnBackStackChangedListener.onBackStackChangeCommited-Callbacks wurde angepasst, sodass er vor der Ausführung von Fragmentvorgängen ausgeführt wird. So wird sichergestellt, dass dem Callback niemals ein Fragment übergeben wird, das getrennt ist. (I66a76, b/273568280)
Fehlerkorrekturen
- Fragment
1.5.6: Ein Problem wurde behoben, bei dem der Aufruf vonclearFragmentResultListenerinnerhalb einessetFragmentResultListenernicht funktionierte, wennLifecyclebereitsSTARTEDwar und ein Ergebnis bereits verfügbar war. (If7458)
Abhängigkeitsupdates
- Das Fragment hängt jetzt von Lifecycle
2.6.1ab. (586fe7) - Das Fragment ist jetzt von SavedState
1.2.1abhängig. (078e4e) - Das Fragment hängt jetzt von ProfileInstaller
1.3.0ab. (3fc05b)
Version 1.6.0-alpha07
8. März 2023
androidx.fragment:fragment-*:1.6.0-alpha07 wird veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.5.6: Es wurde ein Problem behoben, bei dem das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte. (50f098, b/244336571)
Version 1.6.0-alpha06
22. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha06 wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Verhaltensänderung
- Der neue
onBackStackChangedStarted-Callback inFragmentManagervononBackStackChangedListenerwird jetzt ausgeführt, bevor Fragmente in ihre Zielstatus übergehen. (I34726)
Version 1.6.0-alpha05
8. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha05 wird veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener-Schnittstelle bietet jetzt zwei zusätzliche Rückrufe,onBackStackChangeStartedundonBackStackChangeCommitted, die zusätzliche Informationen und Steuerungsmöglichkeiten bieten, wenn sich der Backstack in derFragmentManagerändert. (Ib7ce5, b/238686802)
API-Änderungen
- Die APIs
FragmentundFragmentManager, dieIntentoderIntentSenderverwenden, sind jetzt korrekt mit@NonNullannotiert, um zu verhindern, dass ein Nullwert übergeben wird. Ein Nullwert würde immer sofort die entsprechenden Android-Framework-APIs zum Absturz bringen, die von diesen Methoden aufgerufen werden. (I06fd4)
Version 1.6.0-alpha04
7. Dezember 2022
androidx.fragment:fragment-*:1.6.0-alpha04 wird veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
FragmentStrictModehat ein neuesWrongNestedHierarchyViolationhinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht demchildFragmentManagerdes übergeordneten Elements hinzugefügt wurde. (I72521, b/249299268)
Geändertes Verhalten
- Fragmente stellen jetzt ihren
SavedStateRegistry-Zustand voronAttach()wieder her. So ist er in allen Methoden des Aufwärtslebenszyklus verfügbar. (I1e2b1)
API-Änderungen
- Das
fragment-testing-manifest-Artefakt trennt die Manifesteinträge von den anderen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing und androidx.test vermieden.(I8e534, b/128612536)
Fehlerkorrekturen
- Fragment
1.5.5: Der StatusViewModelwird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (I10d2b, b/253546214)
Version 1.6.0-alpha03
5. Oktober 2022
androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 und androidx.fragment:fragment-testing:1.6.0-alpha03 sind veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Klassen, die
DialogFragmenterweitern, müssen jetzt „super“ in ihrenonDismiss()-Überschreibungen aufrufen. (I14798, b/238928865)
Fehlerkorrekturen
- Es wurden Regressionen behoben, die durch die Integration der neuen Provider-Callback-Schnittstellen (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) verursacht wurden, damit Fragmente immer die richtigen Callbacks erhalten. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Version 1.6.0-alpha02
24. August 2022
androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 und androidx.fragment:fragment-testing:1.6.0-alpha02 sind veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.5.2: Es wurde ein Problem behoben, bei dem die gleichzeitige Ausführung einerpopBackStack()- und einerreplace()-Transaktion dazu führen konnte, dass für das Beenden von Fragmenten die falscheAnimation-/Animator-Methode ausgeführt wurde. (Ib1c07, b/214835303)
Version 1.6.0-alpha01
27. Juli 2022
androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 und androidx.fragment:fragment-testing:1.6.0-alpha01 sind veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Geändertes Verhalten
- Der gespeicherte Status von
Fragments wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierteParcelable-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt. Der Status wird jetzt immer in einemBundlegespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt. (b/207158202)
Fehlerkorrekturen
- Fragment
1.5.1: Es wurde ein Regressionsfehler inDialogFragmentCallbacksDetectorbehoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Abhängigkeitsupdate
- Ab Fragment
1.5.1: Die Fragment-Bibliothek hängt jetzt von Lifecycle2.5.1ab. (Id204c) - Ab Fragment
1.5.1: Die Fragment-Bibliothek hängt jetzt von Activity1.5.1ab. (I10f07)
Version 1.5
Version 1.5.7
19. April 2023
androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 und androidx.fragment:fragment-testing:1.5.7 sind veröffentlicht. Version 1.5.7 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransitionmit einem Zeitlimit verwenden und das zurückgestellte Fragment dann ersetzen, wird es nicht mehr geleakt. (I2ec7d, b/276375110)
Version 1.5.6
22. März 2023
androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 und androidx.fragment:fragment-testing:1.5.6 sind veröffentlicht. Version 1.5.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte. (50f098, b/244336571)
- Ein Problem wurde behoben, durch das der Aufruf von
clearFragmentResultListenerinnerhalb einessetFragmentResultListenernicht funktionierte, wenn dasLifecyclebereitsSTARTEDwar und ein Ergebnis bereits verfügbar war. (If7458)
Version 1.5.5
7. Dezember 2022
androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 und androidx.fragment:fragment-testing:1.5.5 sind veröffentlicht. Version 1.5.5 enthält diese Commits.
Fehlerkorrekturen
- Der Status
ViewModelwird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung für Fragmente gespeichert. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 und androidx.fragment:fragment-testing:1.5.4 sind veröffentlicht. Version 1.5.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem die Weiterleitung an untergeordnete Fragmente fehlschlug, wenn eine benutzerdefinierte
FragmentControllermit einem Host verwendet wurde, der keine Provider-Callback-Schnittstelle (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) implementiert, und die eingestellte Dispatch-Funktion aufgerufen wurde. (I9b380)
Version 1.5.3
21. September 2022
androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 und androidx.fragment:fragment-testing:1.5.3 sind veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Backstack die Callbacks
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()undonConfigurationChanged()erhielten. (I34581, I8dfe6, b/242570955) - Verschachtelte untergeordnete Fragmente erhalten nicht mehr mehrere
onMultiWindowModeChanged()-,onPictureInPictureModeChanged()-,onLowMemory()- oderonConfigurationChanged()-Callbacks. (I690b3, Id0096, If9d6b, I2cba2)
Version 1.5.2
10. August 2022
androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 und androidx.fragment:fragment-testing:1.5.2 sind veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die gleichzeitige Ausführung einer
popBackStack()- und einerreplace()-Transaktion dazu führen konnte, dass für das Beenden von Fragmenten die falscheAnimation/Animatorausgeführt wurde. (Ib1c07, b/214835303)
Version 1.5.1
27. Juli 2022
androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 und androidx.fragment:fragment-testing:1.5.1 sind veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Regressionsfehler in
DialogFragmentCallbacksDetectorbehoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Abhängigkeitsupdate
- Die Fragment-Bibliothek hängt jetzt von Lifecycle
2.5.1ab. (Id204c) - Die Fragment-Bibliothek hängt jetzt von Activity
1.5.1ab. (I10f07)
Version 1.5.0
29. Juni 2022
androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 und androidx.fragment:fragment-testing:1.5.0 sind veröffentlicht. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- CreationExtras-Integration:
Fragmentkann jetzt über Lifecycle2.5.0-CreationExtrasein zustandslosesViewModelProvider.Factorybereitstellen. - Integration von Komponentendialogen:
DialogFragmentverwendet jetztComponentDialogüber Activity1.5.0als Standarddialog, der vononCreateDialog()zurückgegeben wird. - Refactoring des gespeicherten Instanzstatus: Bei Fragmenten hat sich die Art und Weise geändert, wie der Instanzstatus gespeichert wird. So soll klarer ersichtlich sein, welcher Status im Fragment gespeichert wurde und woher der Status stammt. Die aktuellen Änderungen umfassen Folgendes:
FragmentManagerspeichert den gespeicherten Instanzstatus jetzt in einemBundleanstatt direkt in einem benutzerdefiniertenParcelable.- Ergebnisse, die über die
Fragment Result APIsfestgelegt wurden und noch nicht ausgeliefert wurden, werden jetzt separat vom internen Status derFragmentManagergespeichert. - Der Status, der mit jedem einzelnen Fragment verknüpft ist, wird jetzt separat vom internen Status des
FragmentManagergespeichert. So können Sie die Menge des gespeicherten Status, der mit einem einzelnen Fragment verknüpft ist, mit den eindeutigen IDs imFragment-Debug-Logging korrelieren.
Weitere Änderungen
FragmentStrictModebietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu umgehen, indemallowViolation()mit dem Klassennamen verwendet wird.- Die Fragment-APIs zum Bereitstellen eines Menüs für das
ActionBarIhrer Aktivität wurden eingestellt. Die in Aktivität1.4.0hinzugefügten APIsMenuHostundMenuProviderbieten eine testbare, lebenszyklusbewusste API-Oberfläche, die von Fragmenten verwendet werden sollte.
Version 1.5.0-rc01
11. Mai 2022
androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 und androidx.fragment:fragment-testing:1.5.0-rc01 sind veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Refactoring des gespeicherten Instanzstatus
- Der Zustand, der jedem einzelnen Fragment zugeordnet ist, wird jetzt separat vom internen Zustand des
FragmentManagergespeichert. So können Sie die Menge des gespeicherten Zustands, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Fragment-Debug-Logging korrelieren. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 und androidx.fragment:fragment-testing:1.5.0-beta01 sind veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragmenthat eine neuedismissNow-Methode hinzugefügt, diecommitNowverwendet, um mit dershowNow-Funktion übereinzustimmen. Dadurch wird dasDialognicht sofort geschlossen, sondern nur der Status desFragmentManagersynchron aktualisiert. (I15c36, b/72644830)
Refactoring des gespeicherten Instanzstatus
FragmentManagerspeichert den gespeicherten Instanzstatus jetzt in einemBundleanstatt direkt in einem benutzerdefiniertenParcelable. Dies ist der erste Schritt, um mehr Transparenz darüber zu schaffen, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)- Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht zugestellt wurden, werden jetzt separat vom internen Status des
FragmentManagergespeichert. So können Sie besser nachvollziehen, welche Ergebnisse als Teil des gespeicherten Instanzstatus gespeichert werden. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6. April 2022
androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 und androidx.fragment:fragment-testing:1.5.0-alpha05 sind veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.
API-Änderungen
FragmentssetHasOptionsMenu()wurde eingestellt. Zum Verwalten von Menüs und ihren Menüpunkten sollten gemäß den Versionshinweisen zu Fragment1.5.0-alpha04die neuen Menü-APIs verwendet werden. (I7b4b4, b/226438239)
Version 1.5.0-alpha04
23. März 2022
androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 und androidx.fragment:fragment-testing:1.5.0-alpha04 sind veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Fragment-APIs zum Bereitstellen eines Menüs für die
ActionBarIhrer Aktivität wurden eingestellt, da sie Ihr Fragment eng an Ihre Aktivität binden und nicht isoliert getestet werden können. Die in Aktivität1.4.0-alpha01hinzugefügten APIsMenuHostundMenuProviderbieten eine testbare, lebenszyklusbewusste API-Oberfläche, die von Fragmenten verwendet werden sollte. (I50a59, I20758)
Fehlerkorrekturen
SavedStateViewFactoryunterstützt jetzt die Verwendung vonCreationExtras, auch wenn es mit einemSavedStateRegistryOwnerinitialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 1.5.0-alpha03
23. Februar 2022
androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 und androidx.fragment:fragment-testing:1.5.0-alpha03 sind veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtrasan die Funktionenby viewModels()undby activityViewModels()übergeben. (Ibefe7, b/217601110)
Geändertes Verhalten
DialogFragmentverwendet jetztComponentDialogals Standarddialog, der vononCreateDialog()zurückgegeben wird. (If3784, b/217618170)
Version 1.5.0-alpha02
9. Februar 2022
androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 und androidx.fragment:fragment-testing:1.5.0-alpha02 sind veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictModebietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu umgehen, indemallowViolation()mit dem Klassennamen verwendet wird. (I8f678)
Version 1.5.0-alpha01
26. Januar 2022
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 und androidx.fragment:fragment-testing:1.5.0-alpha01 sind veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragmentist jetzt in ViewModel CreationExtras integriert, die im Rahmen von Lifecycle2.5.0-alpha01eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Fragment
1.4.1FragmentContainerView:FragmentContainerViewlöst keine Ausnahme für einen ungültigen Status mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Aus Fragment
1.4.1: Wenn Sie eine benutzerdefinierteownerProducer-Lambda-Funktion mit der Lazy-Funktionby viewModels()verwenden, wird jetzt diedefaultViewModelProviderFactorydes Inhabers verwendet, wenn keine benutzerdefinierteViewModelProvider.Factoryangegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513) - Ein Absturz beim erstmaligen Zugriff auf eine
ViewModelüber einenregisterForActivityResult()-Callback einerFragmentwurde behoben. (Iea2b3)
Version 1.4
Version 1.4.1
26. Januar 2022
androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 und androidx.fragment:fragment-testing:1.4.1 sind veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
- Bei
FragmentContainerViewwird keine Ausnahme für einen unzulässigen Status mehr ausgelöst, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Wenn Sie eine benutzerdefinierte
ownerProducer-Lambda-Funktion mit der Lazy-Funktionby viewModels()verwenden, wird jetzt diedefaultViewModelProviderFactorydes entsprechenden Inhabers verwendet, wenn keine benutzerdefinierteViewModelProvider.Factoryangegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513)
Version 1.4.0
17. November 2021
androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 und androidx.fragment:fragment-testing:1.4.0 sind veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Die
FragmentStrictMode-APIs bieten Laufzeitprüfungen, mit denen Sie überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. DieFragmentStrictMode.Policy, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue MethodesetStrictModePolicy()für einFragmentManagerfestgelegt werden. Diese Richtlinie gilt für diesenFragmentManagerund transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. Weitere Informationen finden Sie unter StrictMode für Fragmente. FragmentContainerViewbietet jetzt einegetFragment()-Methode, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Hier wird dieselbe Logik wie beifindFragmentById()mit der ID vonFragmentContainerViewverwendet, der Aufruf kann aber verkettet werden.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioimplementiert jetztCloseable. Sie können es also mit deruse-Methode von Kotlin oder try-with-resources verwenden.FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll.Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)wurde entfernt und der neue Statusmanager ist jetzt die einzige verfügbare Option.
Mehrere Backstacks
Der FragmentManager verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack() verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In dieser Version werden diese Mechanismen durch drei neue FragmentManager-APIs erweitert: saveBackStack(String name), restoreBackStack(String name) und clearBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.
saveBackStack() funktioniert ähnlich wie popBackStack(), da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()ist immer inklusive.- Im Gegensatz zu
popBackStack(), bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert beisaveBackStack()nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()mit genau diesem nicht leeren Namen ausgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()jedes Fragments aufgerufen und der Status wiederhergestellt wird und alleViewModel-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden (undonCleared()nicht für sie aufgerufen wird).
Die Fragmenttransaktionen, die mit saveBackStack() verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Für jede Fragmenttransaktion muss
setReorderingAllowed(true)verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit
FragmentManagernach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack(), restoreBackStack() und clearBackStack(), mit denen ein zuvor gespeicherter Backstack wiederhergestellt bzw. gelöscht wird, passiert bei beiden nichts, wenn Sie saveBackStack() nicht zuvor mit demselben Namen aufgerufen haben.
Weitere Informationen finden Sie unter Multiple back stacks: A deep dive.
Version 1.4.0-rc01
3. November 2021
androidx.fragment:fragment:1.4.0-rc01 wurde ohne Änderungen gegenüber Fragment 1.4.0-beta01 veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Version 1.4.0-beta01
27. Oktober 2021
androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 und androidx.fragment:fragment-testing:1.4.0-beta01 sind veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Übergeordnete Fragmente senden
onHiddenChanged()jetzt an die gesamte Hierarchie, bevor sie ihren eigenen Callback starten. (Iedc20, b/77504618) - Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit einer geöffneten Tastatur zu einem Fragment mit einer RecyclerView wechseln. (I8b842, b/196852211)
DialogFragmentverwendet jetztsetReorderingAllowed(true)für alle Transaktionen, die beim Aufrufen vonshow(),showNow()oderdismiss()erstellt werden. (Ie2c14)- Die extrem lange Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransactionwurde aufDetachAndAttachSameFragmentgekürzt. (e9eca3)
Version 1.4.0-alpha10
29. September 2021
androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 und androidx.fragment:fragment-testing:1.4.0-alpha10 sind veröffentlicht. Version 1.4.0-alpha10 enthält diese Commits.
Lint
- Die Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransactionwurde hinzugefügt, um zu erkennen, wenn sowohldetach()als auchattach()für dasselbeFragmentim selbenFragmentTransactionaufgerufen werden. Da sich diese komplementären Vorgänge gegenseitig aufheben, wenn sie in derselben Transaktion ausgeführt werden, müssen sie in separate Transaktionen aufgeteilt werden, damit sie tatsächlich etwas bewirken. (aosp/1832956, b/200867930) - Der Lint-Fehler
FragmentAddMenuProviderwurde hinzugefügt, um die Verwendung des Fragment-Lebenszyklus für den Fragment-View-Lebenszyklus zu korrigieren, wenn dieaddMenuProviderAPI vonMenuHostverwendet wird. (aosp/1830457, b/200326272)
Aktualisierungen der Dokumentation
- Die Einstellungsmitteilung für APIs, die jetzt von den Activity Result APIs (
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionsundonRequestPermissionsResult) verarbeitet werden, wurde um weitere Details ergänzt. (cce80f) - Die Mitteilung zur Einstellung von
onActivityCreated()fürFragmentundDialogFragmentwurde um weitere Details ergänzt. (224db4)
Version 1.4.0-alpha09
15. September 2021
androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 und androidx.fragment:fragment-testing:1.4.0-alpha09 sind veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
clearBackStack(name)aufrufen, um alle zuvor mitsaveBackStack(name)gespeicherten Status zu löschen. (I70cd7)
API-Änderungen
- Die Klasse
FragmentContainerViewwurde in Kotlin neu geschrieben, damit die FunktiongetFragmentdie Nullable-Eigenschaft richtig berücksichtigt. (If694a, b/189629145) - FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem der Status eines Fragments, das mit
setReorderingAllowed(true)hinzugefügt und dann sofort vor der Ausführung ausstehender Transaktionen entfernt wurde, nicht richtig bereinigt wurde. (I8ccb8)
Version 1.4.0-alpha08
1. September 2021
androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 und androidx.fragment:fragment-testing:1.4.0-alpha08 sind veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Die
UseRequireInsteadOfGet-Lint-Prüfung wurde verbessert, um redundante Klammern besser zu verarbeiten. (I2d865) - Die
UseGetLayoutInflater-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu berücksichtigen. (Ie5423)
Version 1.4.0-alpha07
18. August 2021
androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 und androidx.fragment:fragment-testing:1.4.0-alpha07 werden ohne nennenswerte Änderungen veröffentlicht. Version 1.4.0-alpha07 enthält diese Commits.
Version 1.4.0-alpha06
4. August 2021
androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 und androidx.fragment:fragment-testing:1.4.0-alpha06 sind veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit mehreren Backstacks wurde behoben, das beim schnellen Wechsel zwischen Backstacks auftrat und dazu führte, dass beim Wiederherstellen eines
FragmentTransactioneinIllegalStateExceptionoder eine zweite Kopie eines Fragments angezeigt wurde. (I9039f) - Ein Problem wurde behoben, durch das
FragmentManagereine Kopie des zuvor übersaveBackStack()gespeicherten Status beibehalten hat, auch nachdem dieser Status wiederhergestellt wurde. (Ied212) - Die
dismissAllowingStateLoss()-Methode vonDialogFragmentstürzt nicht mehr ab, wenn Sie sie aufrufen, nachdem der Status gespeichert wurde, wenn das DialogFragment speziell über dieshow(FragmentTransaction, String)-Methode hinzugefügt wird. (I84422)
Version 1.4.0-alpha05
21. Juli 2021
androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 und androidx.fragment:fragment-testing:1.4.0-alpha05 sind veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.3.6: Die Ansicht des Fragments wird jetzt richtig aufGONEgesetzt, wennhide()verwendet wird und die StammansichttransitionGroup=”true”festgelegt hat. (aosp/1766655, b/193603427) - Ab Fragment
1.3.6:FragmentActivitywird der gespeicherte Status jetzt immer als erster Vorgang in den überschriebenen Lebenszyklus-Callbacks entsperrt. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6: Fragmente sind jetzt von Activity1.2.4abhängig (I3a66c)
Version 1.4.0-alpha04
30. Juni 2021
androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 und androidx.fragment:fragment-testing:1.4.0-alpha04 sind veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
API-Änderungen
FragmentManagerverwendet jetztSavedStateRegistry, um den Status zu speichern. Die MethodensaveAllState()undrestoreSavedState()wurden inFragmentControllerebenfalls verworfen. Wenn SieFragmentControllerverwenden, um Fragmente außerhalb vonFragmentActivityzu hosten, sollte IhrFragmentHostCallbacksSavedStateRegistryOwnerimplementieren. (Iba68e, b/188734238)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Aufruf von
saveBackStack()als Teil der Unterstützung mehrerer Backstacks fehlschlug, wenn er gleichzeitig mit der Ausführung einesFragmentTransactionerfolgte, in demreplace()verwendet wurde. (I73137) - Ein
NullPointerExceptionwurde behoben, der nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen bei Verwendung derrestoreBackStack()API für die Unterstützung mehrerer Backstacks auftreten konnte. Außerdem wurde ein Problem behoben, bei demsetReorderingAllowed(true)nicht für alle Transaktionen geprüft wurde. (I8c593) - Ein Problem wurde behoben, bei dem
FragmentManagerfälschlicherweise weiterhin den zuvor gespeicherten Status von Fragmenten wiederhergestellt hat, auch nachdem diese Fragmente ausFragmentManagerentfernt wurden. Dadurch ist der gespeicherte Status im Laufe der Zeit immer weiter gewachsen. (I1fb8e)
Version 1.4.0-alpha03
16. Juni 2021
androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 und androidx.fragment:fragment-testing:1.4.0-alpha03 sind veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- Alle StrictMode-Klassen für Fragmente
Violationwurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638)FragmentTagUsageViolationenthält jetzt eine detailliertere Fehlermeldung, die den übergeordneten Container enthält, dem das Fragment hinzugefügt worden wäre. (Ic33a7)- Für
WrongFragmentContainerViolationgibt es jetzt eine detailliertere Fehlermeldung, die den Container enthält, dem das Fragment hinzugefügt wurde. (Ib55f8) - Die Anwendungsfallklassen für
TargetFragmentUsageViolationenthalten jetzt detailliertere Fehlermeldungen, die das Fragment, das den Verstoß verursacht, und alle anderen enthaltenen Informationen enthalten. (Icc6ac) - Die Klassen, die
RetainInstanceUsageViolationerweitern, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55) FragmentReuseViolationenthält jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)SetUserVisibleHintViolationenthält jetzt eine detailliertere Fehlermeldung, die angibt, auf welchen Wert der für den Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)
Geändertes Verhalten
- Die Einschränkung für den Aufruf von
fitsSystemWindowsauf einemFragmentContainerViewwurde zurückgesetzt. Ihre App stürzt dadurch nicht mehr ab. (6b8ddd, b/190622202)
Fehlerkorrekturen
- Aus Fragment
1.3.5: Es wurde eine Regression bei Übergängen mit gemeinsam genutzten Elementen behoben, die in Fragment1.3.4durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"oder indirekt übertransitionNameoderbackgroundfestgelegt) und bei gemeinsam genutzten Elementen werden keineIndexOutOfBoundsExceptions mehr ausgegeben. (I16484, b/188679569, b/188969304) - Die
FragmentManagerstürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730) - Der Lint-Check
OnCreateDialogIncorrectCallbackstürzt nicht mehr ab, wenn eine Variable der obersten Ebene ausgewertet wird. (0a9efa, b/189967522)
Version 1.4.0-alpha02
2. Juni 2021
androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 und androidx.fragment:fragment-testing:1.4.0-alpha02 sind veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictModeprotokolliert jetzt immer Verstöße, wenn das Logging über dieFragmentManageraktiviert ist, unabhängig von der aktuellen Richtlinie für den strengen Modus. (I02df6, b/187872638)FragmentStrictModeunterstützt jetzt das Ausschließen bestimmterFragment-Klassen aus dem strengen ModusViolation, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)Die Klasse
FragmentStrictModeViolationwurde erweitert, um Strukturinformationen basierend auf den einzelnen Verstößen hinzuzufügen. So können Sie genau nachvollziehen, was den Verstoß verursacht hat. Das entsprechende Fragment (If5118, b/187871150) ist jeweils inViolationenthalten:WrongFragmentContainerViolationenthält jetzt dieViewGroup, der dieFragmenthinzugefügt werden sollte. (I83c75, b/187871150)TargetFragmentUsageViolationwurde inSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationundGetTargetFragmentRequestCodeUsageViolationaufgeteilt.SetTargetFragmentUsageViolationenthält das Zielfragment und den Anfragecode. (I741b4, b/187871150)SetUserVisibleHintViolationenthält jetzt den booleschen Wert, der ansetUserVisibleHint()übergeben wurde. (I00585, b/187871150)FragmentTagUsageViolationenthält jetzt die ViewGroup, in die das<fragment>-Tag versucht hat, ein Fragment einzufügen.(I5dbbc, b/187871150)FragmentReuseViolationenthält jetzt die eindeutige ID der vorherigen Instanz vonFragment, die den Verstoß verursacht hat. (I0544d, b/187871150)RetainInstanceUsageViolationist jetzt abstrakt und hat zwei Unterklassen,SetRetainInstanceUsageViolationundGetRetainInstanceUsageViolation, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)
Geändertes Verhalten
FragmentContainerViewlöst jetzt eine Ausnahme aus, wenn versucht wird, das AttributfitsSystemWindowprogrammatisch oder über XML zu ändern. Insets sollten von der Ansicht jedes einzelnen Fragments verarbeitet werden. (Ie6651, b/187304502)
Version 1.4.0-alpha01
18. Mai 2021
androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 und androidx.fragment:fragment-testing:1.4.0-alpha01 sind veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
Neue Funktionen
FragmentContainerViewbietet jetzt einegetFragment()-Methode, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Hier wird dieselbe Logik wie beifindFragmentById()mit der ID vonFragmentContainerViewverwendet, der Aufruf kann aber verkettet werden. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll. (I46652)
Mehrere Backstacks
Der FragmentManager verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack() verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In dieser Version werden diese Mechanismen durch zwei neue FragmentManager-APIs erweitert: saveBackStack(String name) und restoreBackStack(String name). Diese APIs verwenden dieselbe name wie addToBackStack(), um den Status von FragmentTransaction und den Status jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.
saveBackStack() funktioniert ähnlich wie popBackStack(), da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()ist immer inklusive.- Im Gegensatz zu
popBackStack(), bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert beisaveBackStack()nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()mit genau diesem nicht leeren Namen ausgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()jedes Fragments aufgerufen und der Status wiederhergestellt wird und alleViewModel-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden (undonCleared()nicht für sie aufgerufen wird).
Die Fragmenttransaktionen, die mit saveBackStack() verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Für jede Fragmenttransaktion muss
setReorderingAllowed(true)verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit
FragmentManagernach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack() passiert bei restoreBackStack() nichts, wenn Sie saveBackStack() nicht zuvor mit demselben Namen aufgerufen haben. (b/80029773)
StrictMode für Fragmente
Die FragmentStrictMode-APIs bieten Laufzeitprüfungen, mit denen Sie überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. Die FragmentStrictMode.Policy, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy() für ein FragmentManager festgelegt werden. Diese Richtlinie gilt für diesen FragmentManager und transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. (#123, #131, #150, b/143774122)
- Mit
detectFragmentReuse()wird erkannt, ob eine zuvor entfernteFragment-Instanz wieder einerFragmentManagerhinzugefügt wird. Sie sollten niemals mit einerFragment-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie zerstört und aus einemFragmentManagerentfernt wurde. (#142, b/153738653) detectFragmentTagUsage()erkennt, wenn Sie das<fragment>-Tag in Ihrem Layout-XML verwenden. Sie sollten immerFragmentContainerViewverwenden, wenn Sie Fragmente als Teil Ihres Layouts einfügen. (#141, b/153738235)detectWrongFragmentContainer()erkennt, wenn Sie einem Container, der keinFragmentContainerViewist, ein Fragment hinzufügen. Verwenden Sie immerFragmentContainerViewals Container für Fragmente in Ihrem Layout. (#146, b/181137036)detectRetainInstanceUsage()erkennt, wenn Sie die verworfenen APIssetRetainInstance()odergetRetainInstance()verwenden. (#140, b/153737954)detectSetUserVisibleHint()erkennt, wenn Sie die eingestelltesetUserVisibleHint()API verwenden. (#136, b/153738974)detectTargetFragmentUsage()erkennt, wenn Sie die verworfenen APIssetTargetFragment(),getTargetFragment()odergetTargetRequestCode()verwenden. (#139, b/153737745)
API-Änderungen
- Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)wurde entfernt und der neue Statusmanager ist jetzt die einzige verfügbare Option. (I90036, b/162776418) FragmentScenarioimplementiert jetztCloseable. Sie können es also mit deruse-Methode von Kotlin oder try-with-resources verwenden. (#121, b/143774122)
Neue Lint-Prüfungen
- Der
UseGetLayoutInflater-Lint-Check warnt jetzt, wennLayoutInflater.from(Context)in einemDialogFragmentverwendet wird. Sie sollten immer diegetLayoutInflater()-Methode des Dialogfragments verwenden, um den entsprechenden Wert fürLayoutInflaterzu erhalten. (#156, b/170781346) - Der
DialogFragmentCallbacksDetector-Lint-Check warnt jetzt, wennsetOnCancelListenerodersetOnDismissListenerin der MethodeonCreateDialog()einesDialogFragmentaufgerufen wird. Diese Listener gehören zumDialogFragmentselbst. Sie solltenonCancel()undonDismiss()überschreiben, um diese Callbacks zu erhalten. (#171, b/181780047, b/187524311)
Fehlerkorrekturen
- Ab Fragment 1.3.4: Es wurde ein Regressionsfehler behoben, der in Fragment
1.3.3eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()-API mitViewModelProvideroder die Jetpack Compose-MethodeviewModel()in einem Fragment verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt dieViewModelProvider.Factoryverwendet, die von Ihrem Fragment bereitgestellt wird, wenn siegetDefaultViewModelProviderFactory()überschreibt (wie bei mit@AndroidEntryPointannotierten Fragmenten bei Verwendung von Hilt). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eineSavedStateViewModelFactoryerstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Ab Fragment 1.3.4: Wenn
FragmentContainerViewunter API 29 verwendet wird, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar- undFloatingActionButton-Instanzen behoben. (I1bb78, b/186012452) - Aus Fragment 1.3.4: Sie können jetzt Ihr Parcelable nach dem Beenden des Prozesses aus dem Fragmentergebnis-Bundle abrufen. (I65932, b/187443158)
- Ab Fragment 1.3.4: Wenn Sie einen Übergang mit gemeinsam genutzten Elementen für eine ViewGroup ausführen und
transitionGroupauf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)
Externe Beiträge
- Vielen Dank an simonschiller für die Implementierung von
CloseableinFragmentScenario. (#121, b/143774122) - Vielen Dank an simonschiller, der die gesamte
FragmentStrictModeAPI für dieses Release hinzugefügt hat. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Vielen Dank an tatocaster für das Hinzufügen des
UseGetLayoutInflater-Lint-Checks. (#156, b/170781346) - Vielen Dank an tatocaster für das Hinzufügen des
DialogFragmentCallbacksDetector-Lint-Checks. (#171, b/181780047)
Version 1.3
Version 1.3.6
21. Juli 2021
androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 und androidx.fragment:fragment-testing:1.3.6 sind veröffentlicht. Version 1.3.6 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.4.0-alpha03:FragmentManagerstürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730) - Die Ansicht des Fragments wird jetzt richtig auf
GONEgesetzt, wennhide()verwendet wird und für die StammansichttransitionGroup=”true”festgelegt ist. (aosp/1766655, b/193603427) FragmentActivityentsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den überschriebenen Lebenszyklus-Callbacks. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6: Fragmente sind jetzt von Activity1.2.4abhängig (I3a66c)
Version 1.3.5
16. Juni 2021
androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 und androidx.fragment:fragment-testing:1.3.5 sind veröffentlicht. Version 1.3.5 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Regression bei Übergängen mit gemeinsam genutzten Elementen behoben, die in Fragment
1.3.4durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"oder indirekt übertransitionNameoderbackgroundfestgelegt) und bei gemeinsam genutzten Elementen werden keineIndexOutOfBoundsExceptions mehr ausgegeben. (I16484, b/188679569, b/188969304)
Version 1.3.4
18. Mai 2021
androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 und androidx.fragment:fragment-testing:1.3.4 sind veröffentlicht. Version 1.3.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Regressionsfehler behoben, der in Fragment
1.3.3eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()API mitViewModelProvideroder der Jetpack Compose-MethodeviewModel()in einem Fragment bei Verwendung von Hilt verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt dieViewModelProvider.Factoryverwendet, die von Ihrem Fragment bereitgestellt wird, wenngetDefaultViewModelProviderFactory()überschrieben wird (wie bei mit@AndroidEntryPointannotierten Fragmenten). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eineSavedStateViewModelFactoryerstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Wenn Sie
FragmentContainerViewin API 29 verwenden, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar- undFloatingActionButton-Instanzen behoben. (I1bb78, b/186012452) - Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Wenn Sie eine Übergangsanimation für ein gemeinsames Element für eine ViewGroup ausführen und
transitionGroupfür die ViewGroup auf „false“ gesetzt ist, wird die Übergangsanimation jetzt korrekt ausgeführt. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 und androidx.fragment:fragment-testing:1.3.3 sind veröffentlicht. Version 1.3.3 enthält diese Commits.
Neue Funktionen
- Die Verwendung von
SavedStateViewModelFactoryfunktioniert jetzt, wenn sie mit demSavedStateRegistryOwnerverwendet wird, das durch die Verwendung vonViewTreeSavedStateRegistryOwner.get()mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)
Fehlerkorrekturen
- Es wurde ein Regressionsfehler behoben, der in Fragment
1.3.2eingeführt wurde und dazu führte, dasspopEnter-Animationen nicht ausgeführt wurden, wenn einFragmentTransactionmit einemsetPrimaryNavFragment-Vorgang wie den vonNavHostFragmentverwendeten entfernt wurde. (I38c87, b/183877426) FragmentContainerViewsorgt jetzt dafür, dass für jedesFragmentein neuer Satz vonWindowInsetsgesendet wird. So kann jedes Fragment die Insets unabhängig voneinander nutzen. (I63f68, b/172153900)- In
DialogFragmentwerden jetzt Fälle richtig behandelt, in denen ein untergeordnetes Fragment einem Container hinzugefügt wird, der dieselbe ID wie ein Container in Ihrer benutzerdefiniertenDialog-Klasse hat. Dadurch werden Probleme mit der Ansichtshierarchie behoben, wenn IDs wiederverwendet werden, die intern von Dialogfeldern wieBottomSheetDialogverwendet werden. (Ie6279, b/180021387) FragmentManager.dump()rückt das erste Fragment in der Liste der aktiven Fragmente jetzt richtig ein. (If5c33, b/183705451)
Neue Fehlerkorrekturen für State Manager
- Der neue Fragment-Statusmanager verarbeitet jetzt Übergänge mit Ausblendvorgängen korrekt. (I9e4de, b/184830265)
Version 1.3.2
24. März 2021
androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 und androidx.fragment:fragment-testing:1.3.2 sind veröffentlicht. Version 1.3.2 enthält diese Commits.
Neue Fehlerkorrekturen für State Manager
- Wenn Sie sowohl
popBackStack()- als auchcommit()-Vorgänge gleichzeitig ausführen, wird mit dem letzten Vorgang jetzt die Richtung für alle Animationen festgelegt. Es werden also nicht mehr einige Pop- und einige Enter-Animationen ausgeführt. (I7072e, b/181142246) - Bei Übergängen mit gemeinsam genutzten Elementen wird der Übergangsname von Ansichten in einer Hierarchie mit gemeinsam genutzten Elementen nicht mehr gelöscht. (I4d4a6, b/179934757)
Abhängigkeitsupdates
- Das Fragment hängt jetzt von Activity 1.2.2 ab. Damit wird ein Problem mit dem
InvalidFragmentVersionForActivityResult-Lint-Check von Activity bei Verwendung von Fragment 1.3.1 oder höher behoben. - Das Fragment hängt jetzt von Lifecycle 2.3.1 ab.
Version 1.3.1
10. März 2021
androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 und androidx.fragment:fragment-testing:1.3.1 sind veröffentlicht. Version 1.3.1 enthält diese Commits.
Neue Funktionen
- Dialogfelder in einem
DialogFragmentkönnen jetzt über ihre DecorView auf ViewTree-Inhaber zugreifen. So kannDialogFragmentmitComposeViewverwendet werden. (Ib9290, b/180691023)
Fehlerkorrekturen
- Fragmente, die in eine bereits
RESUMED-Aktivität mit FragmentContainerView eingefügt wurden, werden nach einer Konfigurationsänderung jetzt richtig angezeigt. (Ie14c8, b/180538371) - Am Ende des Fragments
toString()(I54705, b/177761088) befindet sich kein zusätzliches}mehr. - Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß das JavaDoc der Basismethode (I736ce, b/139548782).
- Die Dokumentation für
setFragmentResultundsetFragmentResultListenerwurde aktualisiert. Die Parameterdokumentation spiegelt nun wider, dass keine Nullwerte mehr akzeptiert werden (I990ba, b/178348386).
Neue Fehlerkorrekturen für State Manager
- Ein Speicherleck in Fragmenten, das durch
mFocusedViewverursacht wurde, wurde behoben (Ib4e9e, b/179925887). - In Fragmenten wird jetzt
onCreateOptionsMenurichtig aufgerufen, wenn show/hide-Transaktionen verwendet werden (I8bce8, b/180255554). - Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen jetzt ordnungsgemäß
RESUMED(Ic11e6, b/180825150). - Mit dem Tag
<fragment>eingefügte Fragmente werden jetzt immer inRESUMEDangezeigt. (I452ac, (I9fa49)
Abhängigkeitsupdates
- Fragment 1.3.1 hängt von Activity
1.2.1ab. (I557b9)
Version 1.3.0
10. Februar 2021
androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 und androidx.fragment:fragment-testing:1.3.0 sind veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Neuer State Manager: Durch eine umfassende Neufassung der internen Komponenten von
FragmentManagerwurden zahlreiche Probleme beim Senden von Lifecycle-Ereignissen, Animationen und Übergängen sowie bei der Verarbeitung verzögerter Fragmente behoben. Activity Result API Integration: Unterstützung für die
ActivityResultRegistryAPI, die in Activity1.2.0eingeführt wurde, umstartActivityForResult()+onActivityResult()- undrequestPermissions()+onRequestPermissionsResult()-Abläufe zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen.- In diesem Release werden einige Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die dazu führen, dass die Activity Result API in früheren Versionen von
FragmentActivitynicht funktioniert. Sie müssen auf Fragment 1.3.0 aktualisieren, um die Activity Result APIs in einemFragmentActivityoderAppCompatActivityzu verwenden.
- In diesem Release werden einige Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die dazu führen, dass die Activity Result API in früheren Versionen von
Fragment Result API: Es wurde Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs in
FragmentManagerhinzugefügt. Das funktioniert für Hierarchiefragmente (über- und untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es sich mindestens im ZustandSTARTEDbefindet. Die Target-Fragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Weitere Informationen finden Sie unter Ergebnisse mit der Fragment Result API abrufen.FragmentOnAttachListener: DeronAttachFragment()-Callback fürFragmentActivityundFragmentwurde eingestellt. Es wurde ein neuesFragmentOnAttachListenerhinzugefügt, um eine flexiblere Alternative zu bieten. Damit kannonAttachFragment()an separate, testbare Listener delegiert werden. Außerdem wird das Hinzufügen eines Listeners zu anderen FragmentManagers als dem direkten untergeordneten FragmentManager unterstützt.FragmentScenarioVerbesserungen: Die KlasseFragmentScenarioaus demfragment-testing-Artefakt wurde in Kotlin neu geschrieben und enthält eine Reihe von Verbesserungen:FragmentScenarioverwendet jetztsetMaxLifecycle(), ummoveToState()zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen gewährleistet und der Status des Fragments wird von der zugrunde liegenden Aktivität entkoppelt.- In
FragmentScenariokann jetzt ein anfänglichesLifecycle.Statefestgelegt werden, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu jedemLifecycle.Stategewechselt wird. - Es gibt jetzt eine Alternative zur
FragmentScenarioAPI vononFragmentin Form der Kotlin-reified-ErweiterungsmethodewithFragment, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst.
ViewTree-Unterstützung:Fragmentunterstützt jetzt die APIsViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)undViewTreeSavedStateRegistryOwner, die in Lifecycle2.3.0und SavedState1.1.0hinzugefügt wurden. Daher wird das Fragment alsViewModelStoreOwnerund einSavedStateRegistryOwnerundLifecycleOwnerzurückgegeben, die an den View-Lebenszyklus des Fragments gebunden sind, wenn einViewin einemFragmentverwendet wird.TRANSIT_-Animationsänderungen: Für die Standardeffekte des Fragments,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEundTRANSIT_FRAGMENT_FADE, wird jetztAnimatoranstelle vonAnimationverwendet. Die Ressourcen, die zum Erstellen dieser Animatoren verwendet wurden, sind jetzt privat.Einstellung von
setRetainInstance(): Die MethodesetRetainInstance()für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor vonViewModelund deronCleared()-Callback, den er empfängt).Einstellung von ViewPager 1-Adaptern: Mit der Veröffentlichung von ViewPager2
1.0.0wurden die KlassenFragmentPagerAdapterundFragmentStatePagerAdapterfür die Interaktion mitViewPagereingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren.
Version 1.3.0-rc02
27. Januar 2021
androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 und androidx.fragment:fragment-testing:1.3.0-rc02 sind veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein übergeordnetes
DialogFragmentnach einer Konfigurationsänderung über einem untergeordnetenDialogFragmentangezeigt wurde. Untergeordnete Dialogfragmente werden jetzt immer über einem übergeordneten Dialogfragment angezeigt. (I30806, b/177439520) - Ein Problem wurde behoben, durch das bei einem
hide-Vorgang mit einemAnimationdas auszublendende Fragment am Ende der Animation aufblitzte. (I57e22, b/175417675) - Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen jetzt
RESUMED. (I1fc1d, b/177154873)
Neue Fehlerkorrekturen für State Manager
- Die Ansicht des Fragments
Lifecycleverarbeitet jetzt Fälle korrekt, in denen die Ansicht des Fragments zerstört wird, bevorLifecycleCREATEDerreicht. Dadurch werden Ausnahmen vom Typ „no event down from INITIALIZED“ vermieden. (eda2bd, b/176138645) - Fragmente, in denen
Animatorverwendet wird, werden jetzt in der richtigen Reihenfolge angezeigt, wennFragmentContainerViewverwendet wird. (Id9aa3, b/176089197)
Version 1.3.0-rc01
16. Dezember 2020
androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 und androidx.fragment:fragment-testing:1.3.0-rc01 sind veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
onPrepareOptionsMenu()folgt jetzt derselben Logik wieonCreateOptionsMenu()und wird nicht mehr aufgerufen, wenn ein übergeordnetes FragmentsetMenuVisibility(false)aufruft. (Id7de8, b/173203654)
Neue Fehlerkorrekturen für State Manager
- Ein Speicherleck und ein visueller Artefakt wurden behoben, die beim Hinzufügen eines Fragments mit einem
Animationzu einemFragmentContainerViewund beim Unterbrechen des Hinzufügens mit einem Pop-Vorgang auftraten. (I952d8) - Ein Problem wurde behoben, durch das die Ansicht des Fragments in der Ansichtshierarchie verblieb, wenn sie während der
onCreate()- oderonViewCreated()-Methoden ersetzt wurde. (I8a7d5) - Der Fokus wird jetzt korrekt auf die Stammansichten von Fragmenten zurückgesetzt, wenn sie fortgesetzt werden. (Ifc84b)
- Wenn Sie Pop- und Replace-Vorgänge in derselben Fragmenttransaktion kombinieren, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691).
Version 1.3.0-beta02
2. Dezember 2020
androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 und androidx.fragment:fragment-testing:1.3.0-beta02 sind veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Neue Funktionen
FragmentScenariowurde vollständig in Kotlin konvertiert. Dabei wurde die Quell- und Binärkompatibilität durch die Verwendung der funktionalen Schnittstellen von Kotlin 1.4 fürFragmentActionbeibehalten. (I19d31)
Geändertes Verhalten
- FragmentContainerViews, in denen kein Fragment mit dem Attribut
classoderandroid:nameeingefügt wird, können jetzt außerhalb einesFragmentActivityverwendet werden. (Id4397, b/172266337) - Wenn Sie versuchen, die maximale Lebensdauer eines Fragments auf
DESTROYEDfestzulegen, wird jetzt eineIllegalArgumentExceptionausgelöst (Ie7651, b/170765622). - Beim Initialisieren eines FragmentScenario mit dem Status
DESTROYEDwird jetzt eineIllegalArgumentExceptionausgelöst (I73590, b/170765622).
Neue Fehlerkorrekturen für State Manager
- Ein Problem wurde behoben, bei dem die Ansicht ihren endgültigen Zustand nicht erreichte, wenn Sie einen Fragmentübergang unterbrachen, bei dem
Animatoroder eine derTRANSIT_FRAGMENT_-Optionen verwendet wurde. (I92426, b/169874632) - Ein Problem wurde behoben, das dazu führte, dass Fragmente mit einem beendeten
Animationnicht richtig zerstört wurden. (I83d65) - Beim Verlassen von Fragmenten, deren Effekte umgekehrt wurden, wird der Vorgang jetzt korrekt abgebrochen und mit dem richtigen Einblendungseffekt neu gestartet. (I62226, b/167092035)
- Es wurde ein Problem behoben, bei dem der Ausgang
Animatoreineshide()nicht ausgeführt wurde. (Id7ffe) - Fragmente werden jetzt richtig angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
- Bei Fragmenten, die den Fokus während einer Animation entfernen, wird nicht mehr versucht, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie
RESUMEDerreichen (I38c65, b/172925703).
Externe Beiträge
FragmentFactoryspeichert jetzt Fragmentklassen für verschiedeneClassLoader-Instanzen separat im Cache. Vielen Dank, Simon Schiller! (#87, b/113886460)
Version 1.3.0-beta01
1. Oktober 2020
androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 und androidx.fragment:fragment-testing:1.3.0-beta01 sind veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
Neue Funktionen
- In
setMaxLifecycle()kann der StatusLifecyclejetzt aufINITIALIZINGgesetzt werden, solange das Fragment nicht inCREATEDverschoben wurde. (b/159662173)
API-Änderungen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Geändertes Verhalten
- Fragmentressourcendateien wurden korrekt privat gemacht. (aosp/1425237)
Fehlerkorrekturen
- Mit dem Tag
<fragment>eingefügte Fragmente warten jetzt ordnungsgemäß, bis ihre Ansichten einem Container hinzugefügt werden, bevor sie in den Status STARTED wechseln (I02f4c). - Bei Fragmenten, die sichtbar sind und dann
setMaxLifecycle()bisCREATED, werden die Exit-Effekte jetzt richtig ausgeführt. (b/165822335) - Das Entfernen eines getrennten Fragments, das nicht dem Backstack hinzugefügt wurde, führt nicht mehr zu einem Speicherleck. Mit freundlicher Genehmigung von Nicklas Ansman Giertz. (b/166489383)
- Aktive Fragmente haben jetzt immer einen nicht leeren
FragmentManagerund Fragmente mit einem nicht leerenFragmentManagerwerden immer als aktiv betrachtet. (aosp/1422346) - Für die Standardeffekte von Fragmenten,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEundTRANSIT_FRAGMENT_FADE, wird jetztAnimatoranstelle vonAnimationverwendet. (b/166155034)
Neue Fehlerkorrekturen für State Manager
- Der Fokusstatus von Ansichten in Fragmenten wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
- Fragmente, die nur einen Übergang für ein gemeinsames Element haben, schließen jetzt ihre Spezialeffekte ordnungsgemäß ab und erreichen ihren endgültigen Status (Iaebc7, b/166658128).
- Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie zerstört werden. (Id5876)
- Der neue Statusmanager entfernt jetzt immer die Ansicht des beendeten Fragments, bevor er die Ansicht des neuen Fragments hinzufügt. (I41a6e)
- Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie die Ansicht eines Eingabefragments vor Beginn der Animation auf
INVISIBLEsetzen, bleibt es also tatsächlich unsichtbar. (b/164481490) - Bei Fragmenten hat
Animatorsjetzt Vorrang vorAnimations. Das bedeutet, dass bei einem Fragment mit beiden nurAnimatorausgeführt undAnimationignoriert wird. (b/167579557) - Der neue Statusmanager führt nicht mehr dazu, dass Fragmente bei der Verwendung von Übergangsanimationen flackern. (b/163084315)
Bekanntes Problem
Wenn Sie bei Verwendung des neuen Statusmanagers während eines Eingabeeffekts auf „Zurück“ drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt. Das Ergebnis ist ein leerer Bildschirm. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19. August 2020
androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 und androidx.fragment:fragment-testing:1.3.0-alpha08 sind veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.
Neuer State Manager
Diese Version enthält ein umfassendes Refactoring der internen Statusverwaltung von FragmentManager, das sich auf das Senden von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung von verzögerten Transaktionen auswirkt. Diese Einstellung ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost „Fragments: Rebuilding the Internals“. (b/139536619, b/147749580)
- Mit einer experimentellen API in
FragmentManager.enableNewStateManager(boolean)kann gesteuert werden, ob FragmentManager den neuen Statusmanager verwendet. (I7b6ee)
Die folgenden Probleme werden nur behoben, wenn Sie den neuen Statusmanager verwenden:
- Das vorherige Fragment eines
replace-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580) - Durch die Verwendung von Fragmenten werden mehrere konkurrierende Animationen für dieselben Fragmente verhindert. So wird vermieden, dass ein
AnimationalleTransition-Effekte überschreibt oder dass einAnimatorund einTransitionfür ein einzelnes Fragment gleichzeitig ausgeführt werden. (b/149569323) - Die
enterTransitionundexitTranstionaller ein- und ausgehenden Fragmente werden jetzt ausgeführt und nicht nur das letzte eingehende und das erste ausgehende Fragment. (b/149344150) - Verschobene Fragmente bleiben nicht mehr im Status
CREATEDhängen, sondern wechseln mit anderen Fragmenten in den StatusSTARTED. (b/129035555) - Ein Problem wurde behoben, bei dem
FragmentManagerVorgänge in falscher Reihenfolge ausgeführt hat, wenn eine verschobene, neu geordnete Transaktion und eine nicht neu geordnete Transaktion kombiniert wurden. (b/147297731) - Wenn mehrere Fragmente gleichzeitig eingeblendet werden, sind Zwischenfragmente beim Verschieben von Fragmenten nicht mehr vorübergehend sichtbar. (b/37140383)
FragmentManagergibt jetzt die richtigen Fragmente zurück, wennfindFragmentById()oderfindFragmentByTag()aus demonAttachFragment()-Callback aufgerufen wird. (b/153082833)- In Fragmenten wird
onCreateView()nicht mehr aufgerufen, wenn Fragmente zerstört werden, während das Fragment, das sie ersetzt, verzögert wird. (b/143915710) - In der Fehlermeldung, die beim Versuch angezeigt wird, Framework-Instanzen
Transitionund AndroidX-InstanzenTransitionzu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang erwähnt. (b/155574969)
Geändertes Verhalten
- Sie können
launch()jetzt für einActivityResultLauncherin deronCreate()-Lebenszyklusmethode eines Fragments aufrufen. (b/161464278) - Wenn
registerForActivityResult()nachonCreate()aufgerufen wird, wird jetzt eine Ausnahme ausgelöst, die angibt, dass dies nicht zulässig ist. Bisher wurden nach einer Konfigurationsänderung keine Ergebnisse zurückgegeben. (b/162255449) FragmentActivityverwendet jetzt dieOnContextAvailableListenerAPI, die in Aktivität1.2.0-alpha08eingeführt wurde, um den Status vonFragmentManagerwiederherzustellen. Alle Listener, die Unterklassen vonFragmentActivityhinzugefügt werden, werden nach diesem Listener ausgeführt. (I513da)
Fehlerkorrekturen
ActivityOptions, die bei der Verwendung vonstartIntentSenderForResult()übergeben werden, werden jetzt berücksichtigt. (b/162247961)
Bekanntes Problem
- Wenn Sie den neuen Statusmanager verwenden, wird die Sichtbarkeit, die Sie direkt nach
onViewCreated()und voronResume()für die Stammansicht des Fragments festlegen, vonFragmentManagerüberschrieben, daFragmentManagerdie Sichtbarkeit der Stammansicht steuert. Als Workaround sollten Sie immer die Vorgängehide()undshow()verwenden, um die Sichtbarkeit des Fragments zu ändern. (b/164481490)
Version 1.3.0-alpha07
22. Juli 2020
androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 und androidx.fragment:fragment-testing:1.3.0-alpha07 sind veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.
Neue Funktionen
FragmentScenariounterstützt jetzt das Festlegen eines anfänglichen Lebenszyklusstatus vonCREATED,STARTEDoderRESUMED, anstatt das Fragment immer in den StatusRESUMEDzu versetzen. (b/159662750)- Es wurde eine Alternative zur
FragmentScenario-API vononFragmentin Form der reifizierten Kotlin-ErweiterungsmethodewithFragmenthinzugefügt, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst. (b/158697631)
Geändertes Verhalten
FragmentScenarioverwendet jetztsetMaxLifecycle(), ummoveToState()zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen gewährleistet und der Status des Fragments wird von der zugrunde liegenden Aktivität entkoppelt. (b/156527405)- Der von
ViewTreeSavedStateRegistryOwnerzurückgegebeneSavedStateRegistryOwnerist jetzt an den Lebenszyklus der Fragmentansicht gebunden. So wird sichergestellt, dass der Zustand gleichzeitig mit der Ansicht des Fragments gespeichert und wiederhergestellt wird. (b/158503763)
Fehlerkorrekturen
- Fragmente warten jetzt darauf, dass die Ansicht des Fragments angehängt wird, bevor
ViewCompat.requestApplyInsets()aufgerufen wird. So werden Fälle vermieden, in denen die Inset-Anfrage verworfen wurde. (b/158095749) - Beim Aufrufen von
clearFragmentResultListenerwird der Lifecycle-Observer jetzt richtig gelöscht. (b/159274993)
Version 1.3.0-alpha06
10. Juni 2020
androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 und androidx.fragment:fragment-testing:1.3.0-alpha06 sind veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Der
onAttachFragment()-Callback fürFragmentActivityundFragmentwurde eingestellt. Es wurde ein neuesFragmentOnAttachListenerhinzugefügt, um eine flexiblere Alternative zu bieten. Damit kannonAttachFragment()an separate, testbare Listener delegiert werden. Außerdem wird das Hinzufügen eines Listeners zu anderen FragmentManagers als dem direkten untergeordneten FragmentManager unterstützt. (I06d3d)
Fehlerkorrekturen
- Der Ansichtsstatus von übergeordneten Fragmenten wird jetzt vor dem ihrer untergeordneten Fragmente wiederhergestellt. Dadurch wird ein Problem mit der visuellen Reihenfolge nach einer Konfigurationsänderung behoben, wenn in einem
DialogFragmentein anderesDialogFragmentals untergeordnetes Fragment angezeigt wird. (b/157195715) - Ein Problem wurde behoben, bei dem der
UseRequireInsteadOfGet-Lint-Check verkettete Verwendungen der Operatoren?.und!!nicht richtig verarbeitet hat. (b/157677616)
Version 1.3.0-alpha05
20. Mai 2020
androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 und androidx.fragment:fragment-testing:1.3.0-alpha05 sind veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für
ViewTreeViewModelStoreOwneraus Lifecycle2.3.0-alpha03undViewTreeSavedStateRegistryOwneraus SavedState1.1.0-alpha01bei Verwendung einesViewin einemFragmentwurde hinzugefügt. (aosp/1297993, aosp/1300264)
API-Änderungen
- Die APIs
setFragmentResult()undsetFragmentResultListener()akzeptieren jetzt jeweils einenBundle- und einenFragmentResultListener-Wert, der nicht null ist. Verwenden Sie die neuen MethodenclearFragmentResult()undclearFragmentResultListener(), um ein zuvor festgelegtes Ergebnis oder einen Listener explizit zu löschen. (b/155416778) - Die
setFragmentResultListener()-Kotlin-Erweiterungen, die ein Lambda verwenden, sind jetzt alsinlinemarkiert. (b/155323404)
Geändertes Verhalten
- Die zuvor eingestellten
startActivityForResult(),startIntentSenderForResult()undrequestPermissionsaufFragmentverwenden jetzt internActivityResultRegistry. Dadurch entfällt die Einschränkung, dass bei der Verwendung dieser APIs nur die unteren Bits (unter0xFFFF) für Ihre Anfragecodes verwendet werden dürfen. (b/155518741)
Aktualisierungen der Dokumentation
- Die Dokumentation zu den Konstruktoren
Fragment(@LayoutRes int)undDialogFragment(@LayoutRes int)wurde erweitert, um zu verdeutlichen, dass sie beim Verwenden des Standard-FragmentFactoryaus dem Konstruktor ohne Argumente der Unterklassen aufgerufen werden sollten. (b/153042497)
Version 1.3.0-alpha04
29. April 2020
androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 und androidx.fragment:fragment-testing:1.3.0-alpha04 sind veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Es wurde Unterstützung für das Übergeben von Ergebnissen zwischen zwei Fragmenten über neue APIs in
FragmentManagerhinzugefügt. Das funktioniert für Hierarchiefragmente (über- und untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es sich mindestens im ZustandSTARTEDbefindet. (b/149787344)
API-Änderungen
- Die Ziel-Fragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
- Die APIs
startActivityForResult()/onActivityResult()undrequestPermissions()/onRequestPermissionsResult()für Fragment wurden eingestellt. Verwenden Sie die Activity Result APIs. (aosp/1290887) - Funktionsgefährdende Änderung in Aktivität
1.2.0-alpha04: Die MethodeprepareCall()wurde inregisterForActivityResult()umbenannt. (aosp/1278717)
Fehlerkorrekturen
- Die
getViewLifecycleOwner()des Fragments wird jetzt vor dem Aufruf vononSaveInstanceState()beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. (b/154645875) - Wenn
setMenuVisibility(false)für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. (b/153593580) - Ein
illegalStateExceptionwurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einesDialogFragmentmitFragmentContainerViewaufgetreten ist. (b/154366601) - Die Methode
getDefaultViewModelProviderFactory()für Fragmente stürzt nicht mehr ab, wenn Sie Ihre Fragmente außerhalb einer Aktivität hosten. (b/153762914)
Version 1.3.0-alpha03
1. April 2020
androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 und androidx.fragment:fragment-testing:1.3.0-alpha03 sind veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
prepareCall-Methoden fürFragmentsind jetztfinal. (b/152439361)
Fehlerkorrekturen
- Ein in Fragment
1.3.0-alpha02eingeführter Regressionsfehler bei der Verwendung vonBottomSheetDialogFragmentwurde behoben. (b/151652127, aosp/1263328, aosp/1265163) - Ein Absturz bei der Verwendung von
prepareCallaus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004) - Ein Problem wurde behoben, bei dem Übergänge für gemeinsame Elemente und Exit-Übergänge bei Verwendung von
setTargetFragment()ignoriert wurden. (b/152023196) - Fragment
1.2.4: Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338) - Aus Fragment
1.2.4: DieFragmentLiveDataObserve-Lint-Regel fürDialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und der View-Lebenszyklus immer synchron sind. Daher kann beim Aufrufen vonobserveentwederthisoderviewLifecycleOwnerverwendet werden. (b/151765086)
Änderungen an Abhängigkeiten
- Fragmente sind von Activity
1.2.0-alpha03abhängig, in der die Activity Result API, die in Activity1.2.0-alpha02eingeführt wurde, erheblich verbessert wurde.
Version 1.3.0-alpha02
18. März 2020
androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 und androidx.fragment:fragment-testing:1.3.0-alpha02 sind veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Unterstützung für die
ActivityResultRegistryAPI hinzugefügt, die in Activity1.2.0-alpha02eingeführt wurde, um die AbläufestartActivityForResult()+onActivityResult()undrequestPermissions()+onRequestPermissionsResult()zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen. (b/125158199)
API-Änderungen
DialogFragmentbietet jetzt einen Konstruktor, der ein@LayoutResverwendet, das das Layout angibt, dasonCreateView()standardmäßig aufblähen soll. (b/150327080)- Die Methode
onActivityCreated()ist jetzt veraltet. Code, der die Ansicht des Fragments betrifft, sollte inonViewCreated()(die unmittelbar voronActivityCreated()aufgerufen wird) und anderer Initialisierungscode inonCreate()stehen. Wenn Sie einen Rückruf erhalten möchten, sobald dieonCreate()der Aktivität abgeschlossen ist, sollte einLifeCycleObserverfür dieLifecycleder Aktivität inonAttach()registriert und entfernt werden, sobald deronCreate()-Rückruf empfangen wurde. (b/144309266)
Fehlerkorrekturen
- Fragment
1.2.3: Ein Fehler inDialogFragmentwurde behoben, der beim Aufrufen vongetLayoutInflater()ausonCreateDialog()heraus einenStackOverflowErrorverursachte. (b/117894767, aosp/1258664) - Fragment
1.2.3: Der Umfang der enthaltenen ProGuard-Regeln für Fragment wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169) - Fragment
1.2.3: Falsch positive Ergebnisse imUseRequireInsteadOfGet-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Namen der Kotlin-Property überschattete. (b/149891163) - Fragment
1.2.3:FragmentContainerViewlöst bei Verwendung des falschen Konstruktors in der Layoutvorschau keinenUnsupportedOperationExceptionmehr aus. (b/149707833)
Bekannte Probleme
BottomSheetDialogFragmentpositioniert das Dialogfeld nicht mehr richtig auf dem Bildschirm. (b/151652127)
Version 1.3.0-alpha01
4. März 2020
androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 und androidx.fragment:fragment-testing:1.3.0-alpha01 sind veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung für die in Lifecycle
2.3.0-alpha01hinzugefügteViewTreeLifecycleOwner.get(View)API wurde hinzugefügt, sodass dieviewLifecycleOwnerdes Fragments alsLifecycleOwnerfür alle vononCreateView()zurückgegebenen Ansichten zurückgegeben wird. (aosp/1182955)
API-Änderungen
- Die Methode
setRetainInstance()für Fragmente ist veraltet. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor vonViewModelund deronCleared()-Callback, den er empfängt). (b/143911815) - Mit der Veröffentlichung von ViewPager2
1.0.0wurden die KlassenFragmentPagerAdapterundFragmentStatePagerAdapterfür die Interaktion mitViewPagerverworfen. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren. (b/145132715)
Fehlerkorrekturen
- Fragment-ProGuard-Regeln behalten jetzt korrekt nur die Standardkonstruktoren von
Fragment-Klassen bei, die verwendet werden, anstatt für alleFragment-Instanzen. Damit wird eine Regression behoben, die in Fragment1.2.1eingeführt wurde. (b/149665169 - Die in Fragment
1.2.2hinzugefügtenrequire___()-Lint-Regeln liefern nicht mehr fälschlicherweise positive Ergebnisse für lokale Variablen, die denselben Namen wie die überschatteten Kotlin-Property-Namen haben (z.B.view). (b/149891163) - Bei Verwendung der Layoutvorschau in Android Studio wird für
FragmentContainerViewkeinUnsupportedOperationExceptionmehr ausgegeben. (b/149707833) - Ein Problem wurde behoben, durch das beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht nach jeder Konfigurationsänderung neu erstellt und dann wieder zerstört wurden. (b/145832397)
Version 1.2.5
Version 1.2.5
10. Juni 2020
androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 und androidx.fragment:fragment-testing:1.2.5 sind veröffentlicht. Version 1.2.5 enthält diese Commits.
Fehlerkorrekturen
- Die
getViewLifecycleOwner()des Fragments wird jetzt vor dem Aufruf vononSaveInstanceState()beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. Diese Funktion wurde zuvor im Fragment1.3.0-alpha04veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. Diese Funktion wurde zuvor im Fragment1.3.0-alpha04veröffentlicht. (b/153593580)
Version 1.2.4
Version 1.2.4
1. April 2020
androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 und androidx.fragment:fragment-testing:1.2.4 sind veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
- Die
FragmentLiveDataObserve-Lint-Regel fürDialogFragment-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Ansichtslebenszyklus immer synchron sind. Daher kann beim Aufrufen vonobserveentwederthisoderviewLifecycleOwnerverwendet werden. (b/151765086)
Version 1.2.3
Version 1.2.3
18. März 2020
androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 und androidx.fragment:fragment-testing:1.2.3 sind veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
DialogFragmentwurde behoben, der beim Aufrufen vongetLayoutInflater()ausonCreateDialog()heraus einenStackOverflowErrorverursacht hat. (b/117894767, aosp/1258665) - Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169)
- Falsch positive Ergebnisse im
UseRequireInsteadOfGet-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Kotlin-Attributnamen überschattete. (b/149891163) FragmentContainerViewlöst nicht mehr den FehlerUnsupportedOperationExceptionaus, wenn der falsche Konstruktor in der Layoutvorschau verwendet wird. (b/149707833)
Version 1.2.2
Version 1.2.2
19. Februar 2020
androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 und androidx.fragment:fragment-testing:1.2.2 sind veröffentlicht. Version 1.2.2 enthält diese Commits.
Neue Lint-Prüfungen
- Lint schlägt vor,
viewLifecycleOwneralsLifecycleOwnerfür Aufrufe vonOnBackPressedDispatcherinonCreateView(),onViewCreated()undonActivityCreated()zu verwenden. (b/142117657) - Es wurde ein neuer Lint-Check hinzugefügt, der bestätigt, dass Sie die richtige
debugImplementationverwenden, wenn Sie dasfragment-testing-Artefakt verwenden. (b/141500106) - Für alle Fragment-APIs, die sowohl eine
get- als auch einerequire-Entsprechung enthalten, wird jetzt empfohlen, die zugehörigenrequire___()-Methoden für aussagekräftigere Fehlermeldungen anstelle voncheckNotNull(get___()),requireNonNull(get___())oderget___()!!zu verwenden. (aosp/1202883)
Fehlerkorrekturen
- Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981).
- Der vorhandene Lint-Check, der die Verwendung von
viewLifecycleOwnerbei der Verwendung vonobservevorschlägt, wurde verbessert, um auch dielivedata-ktx-Erweiterungsmethodenversion vonobservezu berücksichtigen. (b/148996309) - Die Formatierung für viele Lint-Prüfungen wurde korrigiert (aosp/1157012).
Externe Beiträge
- Vielen Dank an Zac Sweers für die
require___()-Lint-Prüfungen im Namen von Slack. (aosp/1202883)
Version 1.2.1
Version 1.2.1
5. Februar 2020
androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 und androidx.fragment:fragment-testing:1.2.1 sind veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Fragmente, die über die Methoden
addundreplacehinzugefügt werden und eineClass-Instanz (oder die Kotlin-reifizierten Versionen) verwenden, behalten jetzt ihren Standardkonstruktor bei ProGuard. (b/148181315) FragmentStatePagerAdapterundFragmentPagerAdapterfangen keine Ausnahmen mehr ab, die vonFragmentManagerausgelöst werden, wennfinishUpdate()ausgeführt wird. (aosp/1208711)- Ein Problem wurde behoben, durch das
FragmentManager.findFragment()nicht mit Fragmenten funktionierte, die über das<fragment>-Tag hinzugefügt wurden. (b/147784323) - Für Fragmente, die mit dem Tag
<fragment>eingefügt werden, wird jetzt immeronInflate()voronCreate()aufgerufen, wenn sie sich im Layout befinden. (aosp/1215856) - Das Aufrufen von
toString()für eineFragmentManager-Instanz löst nicht mehr die AusnahmeNullPointerExceptionaus, wenn die Aktivität bereits zerstört wurde. (b/148189412)
Änderungen an Abhängigkeiten
- Das Fragment
1.2.1hängt jetzt von Lifecycle ViewModel SavedState2.2.0ab.
Version 1.2.0
Version 1.2.0
22. Januar 2020
androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 und androidx.fragment:fragment-testing:1.2.0 sind veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- FragmentContainerView: Die
FragmentContainerViewist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Sie ersetzt die Verwendung vonFrameLayoutoder anderen Layouts. Es unterstützt auch dieselbenclass,android:nameund optionalenandroid:tagwie das<fragment>-Tag, verwendet aber ein normalesFragmentTransaction, um dieses erste Fragment hinzuzufügen, anstatt des benutzerdefinierten Codepfads, der von<fragment>verwendet wird. onDestroyView()-Timing: Fragmente warten jetzt auf den Abschluss von Exit-Animationen, Exit-Framework-Übergängen und Exit-AndroidX-Übergängen (bei Verwendung von Transition1.3.0), bevoronDestroyView()aufgerufen wird.- Klassenbasiert
add()undreplace(): Es wurden neue Überladungen vonadd()undreplace()fürFragmentTransactionhinzugefügt, die einClass<? extends Fragment>und optional einBundlevon Argumenten akzeptieren. Bei diesen Methoden wird IhrFragmentFactoryverwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen.fragment-ktxwurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (d. h.fragmentTransaction.replace<YourFragment>(R.id.container)). - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactoryist jetzt die Standardfactory, die verwendet wird, wennby viewModels(),by activityViewModels(), derViewModelProvider-Konstruktor oderViewModelProviders.of()mit einem Fragment verwendet wird. - Neue Lint-Prüfungen: Es wurde eine neue Lint-Prüfung hinzugefügt, die dafür sorgt, dass Sie
getViewLifecycleOwner()verwenden, wenn SieLiveDataausonCreateView(),onViewCreated()oderonActivityCreated()beobachten. getFragmentManager()-Einstellung: Die MethodengetFragmentManager()undrequireFragmentManager()für „Fragment“ wurden eingestellt und durch eine einzelnegetParentFragmentManager()-Methode ersetzt, die das nicht leereFragmentManagerzurückgibt, dem das Fragment hinzugefügt wird. MitisAdded()können Sie feststellen, ob es sicher ist, die Methode aufzurufen.FragmentManager.enableDebugLogging()-Einstellung: Die statische MethodeFragmentManager.enableDebugLoggingwurde eingestellt. FragmentManager berücksichtigt jetztLog.isLoggable()für das TagFragmentManager. So können Sie entwederDEBUG- oderVERBOSE-Logging aktivieren, ohne Ihre App neu kompilieren zu müssen.
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
classoderandroid:namein einemFragmentContainerViewverwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. (b/142601969) - Wenn Sie ein
NavHostFragmentmitclassoderandroid:namein XML mitFragmentContainerViewhinzufügen, können SiefindNavController()nicht inonCreate()Ihrer Aktivität verwenden. (b/142847973)
Version 1.2.0-rc05
8. Januar 2020
androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 und androidx.fragment:fragment-testing:1.2.0-rc05 sind veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.
Fehlerkorrekturen
- Ein Regressionsfehler im Fragment
1.2.0-rc04bei Verwendung des Tags<fragment>wurde behoben. Dadurch wurdeonViewCreated()während der Zerstörung der Aktivität fälschlicherweise aufgerufen. (b/146290333) - Fragmente, die mit dem Tag
<fragment>hinzugefügt werden, werden jetzt richtig gelöscht, auch wenn sie nur manchmal im Layout vorhanden sind (z.B. nur im Querformat). Daher werden diese Fragmente jetzt korrekt inCREATEDverschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden also nicht instanziiert, ohne dass Lebenszyklusmethoden durchlaufen werden. (b/145769287)
Version 1.2.0-rc04
18. Dezember 2019
androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 und androidx.fragment:fragment-testing:1.2.0-rc04 sind veröffentlicht. Version 1.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die Animationen für
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEundTRANSIT_FRAGMENT_FADEwurden angepasst, um visuelle Probleme zu vermeiden. (b/145468417)
Version 1.2.0-rc03
4. Dezember 2019
androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 und androidx.fragment:fragment-testing:1.2.0-rc03 sind veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Ein unbeabsichtigtes Verhalten wurde korrigiert, bei dem entfernte Fragmente weiterhin von
findFragmentById()/findFragmentByTag()zurückgegeben wurden, während ihre Übergangs- oder Beendigungsanimationen liefen. (b/143982969, aosp/1167585) - Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Fragmenten beendet, wenn die enthaltende Aktivität
onSaveInstanceState()aufruft. (b/144380645) - Ein Problem wurde behoben, bei dem Ansichten fälschlicherweise mit
INVISIBLEgekennzeichnet wurden, nachdem ein ausgeblendetes Fragment eingeblendet wurde. (b/70793925) - Übergänge für freigegebene Elemente in Fragmenten unterstützen jetzt Ansichten, die gedreht, skaliert usw. wurden (b/142835261).
Aktualisierungen der Dokumentation
- Die Dokumentation zur Einstellung von
setUserVisibleHint()wurde klarer formuliert. (b/143897055) - Die Dokumentation zu
setFragmentFactory()undgetFragmentFactory()wurde verbessert, um besser darauf hinzuweisen, dass das Festlegen einesFragmentFactoryauch Auswirkungen auf untergeordnete FragmentManager hat. (aosp/1170095)
Änderungen an Abhängigkeiten
- Fragments hängt jetzt von Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03und Activity1.1.0-rc03ab.
Version 1.2.0-rc02
7. November 2019
androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 und androidx.fragment:fragment-testing:1.2.0-rc02 sind veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin wird für den LintFix für die Verwendung von
getViewLifecycleOwner()beim Beobachten vonLiveDataausonCreateView(),onViewCreated()oderonActivityCreated()(eingeführt in Fragment1.2.0-rc01) jetzt die Kotlin-Syntax für den EigenschaftenzugriffviewLifecycleOwneranstelle vongetViewLifecycleOwner()verwendet. (aosp/1143821)
Version 1.2.0-rc01
23. Oktober 2019
androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 und androidx.fragment:fragment-testing:1.2.0-rc01 sind veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Neue Funktionen
FragmentContainerViewunterstützt jetzt zusätzlich zuandroid:nameauch das Attributclass. Damit wird die Funktionalität des<fragment>-Tags gespiegelt. (b/142722242)- Es wurde ein neuer Lint-Check hinzugefügt, der dafür sorgt, dass Sie
getViewLifecycleOwner()verwenden, wenn SieLiveDataausonCreateView(),onViewCreated()oderonActivityCreated()beobachten. (b/137122478)
Fehlerkorrekturen
- Die Callbacks
onDismissundonCancelfürDialogFragmentgarantieren jetzt, dassDialogInterface, das an sie übergeben wird, nicht null ist und dassgetDialog()bei der Ausführung nicht null zurückgibt. (b/141974033) - Mit
FragmentContainerViewwird das durchclassoderandroid:namedefinierte Fragment jetzt als Teil der Inflation hinzugefügt. So wird dafür gesorgt, dassfindFragmentById()undfindFragmentByTag()direkt danach funktionieren. (b/142520327) - Ein
IllegalStateExceptioninFragmentContainerViewwurde behoben, da der Status gespeichert wurde. (b/142580713) - Ein
UnsupportedOperationExceptioninFragmentContainerViewwurde behoben, wenn die KlasseFragmentContainerViewverschleiert ist. (b/142657034)
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
classoderandroid:namein einemFragmentContainerViewverwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. Wir haben die Lint-Regel deaktiviert, die vorschlägt, zuFragmentContainerViewzu wechseln, bis das Problem überaapt2behoben ist. (b/142601969)
Version 1.2.0-beta02
11. Oktober 2019
androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 und androidx.fragment:fragment-testing:1.2.0-beta02 sind veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das
onInflate()eines Fragments keine korrekten Attribute vonFragmentContainerViewerhalten hat, was zu Fehlern bei Fällen wieNavHostFragmentführte. (b/142421837)
Version 1.2.0-beta01
9. Oktober 2019
androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 und androidx.fragment:fragment-testing:1.2.0-beta01 sind veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
FragmentContainerViewbietet Unterstützung für das Hinzufügen eines ersten Fragments mit zusätzlicher Unterstützung für die XML-Attributeandroid:nameund optionalandroid:tag. Im Gegensatz zum<fragment>-Tag wird beiFragmentContainerViewein normalesFragmentTransactionverwendet, um das erste Fragment hinzuzufügen. Dadurch sind weitereFragmentTransaction-Vorgänge für dasFragmentContainerViewmöglich und View Binding kann für das Layout verwendet werden. (b/139830628, b/141177981)- Fragments enthält jetzt eine Lint-Warnung, die eine schnelle Korrektur zum Ersetzen von
<fragment>durchFragmentContainerViewbietet. (b/139830056)
Fehlerkorrekturen
- Ein
ClassCastExceptionbei der Verwendung vonandroidx.transitionwurde behoben. (b/140680619) - Bei Verwendung von Transition
1.3.0-beta01warten Fragmente jetzt auf den Abschluss vonandroidx.transition-Übergängen (zusätzlich zu Framework-Übergängen und -Animationen, die in Fragment1.2.0-alpha03bzw. Fragment1.2.0-alpha02behoben wurden), bevoronDestroyView()gesendet wird. (aosp/1119841) - Bei Verwendung von Transition
1.3.0-beta01werdenandroidx.transition-Übergänge in Fragmenten jetzt richtig abgebrochen, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841) - Es wurde ein Problem auf API 17 und niedriger behoben, das beim Verwenden von
androidx.transition-Übergängen für die Stammansicht des Fragments bei Verwendung vonFragmentContainerViewauftrat. (b/140361893) - Das
fragment-testing-Artefakt hängt jetzt von AndroidX Test1.2.0ab. Dadurch wird eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben. (b/139100149) - Die Verwendung von
Log.win FragmentManager wurde entfernt. (aosp/1126468)
Bekannte Probleme
- Die
onInflate()des Fragments erhalten keine korrekten Attribute vonFragmentContainerView, was zu Problemen wieNavHostFragmentführt. (b/142421837)
Version 1.2.0-alpha04
18. September 2019
androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 und androidx.fragment:fragment-testing:1.2.0-alpha04 sind veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
getFragmentManager()undrequireFragmentManager()fürFragmentwurden eingestellt und durch eine einzelnegetParentFragmentManager()-Methode ersetzt, die dasFragmentManagerzurückgibt, dem das Fragment hinzugefügt wird (mitisAdded()können Sie feststellen, ob der Aufruf sicher ist). (b/140574496) - Die statische Methode
FragmentManager.enableDebugLoggingwurde verworfen. FragmentManager berücksichtigt jetztLog.isLoggable()für das TagFragmentManager. So können Sie entweder die Protokollierung vonDEBUGoderVERBOSEaktivieren, ohne Ihre App neu kompilieren zu müssen. (aosp/1116591)
Fehlerkorrekturen
- Fragmente werden jetzt ordnungsgemäß zerstört, während die Übergangsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
- Es wurde ein Problem behoben, bei dem in Fragmenten
Activity.findViewById()aufgerufen wurde, obwohl das zuvor nicht der Fall war. (aosp/1116431)
Version 1.2.0-alpha03
5. September 2019
androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 und androidx.fragment:fragment-testing:1.2.0-alpha03 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
FragmentContainerViewheißt jetztfinal. (b/140133091)
Fehlerkorrekturen
FragmentContainerViewkehrt die Zeichenreihenfolge jetzt korrekt um, wenn Fragmente aus dem Backstack entfernt werden. (b/139104187)- Ein Problem wurde behoben, durch das die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment entfernt und ein neues Fragment hinzugefügt wurde. (b/111659726)
- Fragmente warten jetzt auf den Abschluss von Übergängen (zusätzlich zu Animationen, was in Fragment
1.2.0-alpha02behoben wurde), bevoronDestroyView()gesendet wird. (b/138741697)
Version 1.2.0-alpha02
7. August 2019
androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 und androidx.fragment:fragment-testing:11.2.0-alpha02 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactoryist jetzt die Standardfactory, die verwendet wird, wenn Sieby viewModels(),by activityViewModels(), denViewModelProvider-Konstruktor oderViewModelProviders.of()mit einemFragmentverwenden. (b/135716331)- Die Standardanimationen bei Verwendung von
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEmitsetTransitionauf einemFragmentTransactionwurden aktualisiert, um den Animationen zu entsprechen, die von Aktivitäten auf Android 10-Geräten verwendet werden. (aosp/1012812, aosp/1014730)
API-Änderungen
FragmentContainerViewwird als dringend empfohlener Container für dynamisch hinzugefügte Fragmente eingeführt und ersetzt die Verwendung vonFrameLayoutusw., da damit Probleme mit der Z-Reihenfolge von Animationen und dem Senden von Fenstereinblendungen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)- Es wurde eine statische
FragmentManager.findFragment(View)-Methode hinzugefügt, mit der das enthaltende Fragment aus einer Ansicht abgerufen werden kann, die von einem Fragment eingefügt wurde. Eine Kotlin-Erweiterung ist auch infragment-ktxverfügbar. (aosp/1090757) - Es wurden neue Überladungen von
add()undreplace()fürFragmentTransactionhinzugefügt, die einClass<? extends Fragment>und optional einBundlevon Argumenten akzeptieren. Bei diesen Methoden wird IhrFragmentFactoryverwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen.fragment-ktxwurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987) @MainThread-Annotationen wurden denFragment-Lifecycle-Callbacks hinzugefügt. (b/127272564)- Die APIs für den Brotkrümeltitel auf
FragmentTransactionundFragmentManager.BackStackEntrywurden eingestellt. (b/138252944) - Die Methode
setTransitionStylefürFragmentTransactionwurde verworfen. (aosp/1011537) - Viele der Methoden in
FragmentManagersind nicht mehrabstract.FragmentManagerselbst bleibtabstractund sollte nicht direkt instanziiert oder erweitert werden. Sie sollten weiterhin nur eine vorhandene Instanz vongetSupportFragmentManager(),getChildFragmentManager()usw. abrufen.
Fehlerkorrekturen
- Aus Fragment
1.1.0-rc04: Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt wurden. (b/138251858) - Fragment
1.1.0-rc03: Ein Problem wurde behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wennpostponeEnterTransition()mit einem Timeout mehr als einmal aufgerufen wurde. (b/137797118) - Fragment
1.1.0-rc02:FragmentPagerAdapterundFragmentStatePagerAdapter: Ein Absturz beim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Fragmente warten jetzt, bis Animationen abgeschlossen sind, bevor sie
onDestroyView()senden. (b/136110528) - Fragmentanimationen von untergeordneten Fragmenten und ihren untergeordneten Elementen werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
- Ein
NullPointerExceptionwurde behoben, der beim Verwenden von Übergängen für gemeinsame Elemente und beim Kombinieren von Pop- und Add-Vorgängen aufgetreten ist. (b/120507394) - Es wurde eine Behelfslösung für
IllegalStateExceptions hinzugefügt, wennFragmentPagerAdapterundFragmentStatePagerAdapterin Robolectric-Tests verwendet werden. (b/137201343)
Version 1.2.0-alpha01
2. Juli 2019
androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 und androidx.fragment:fragment-testing:1.2.0-alpha01 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- FragmentManager ruft jetzt
requestApplyInsets()auf, nachdem die Ansicht des Fragments angehängt wurde und direkt vor dem Aufrufen vononViewCreated(). So wird dafür gesorgt, dass Ihre Ansicht immer die richtigen Insets hat. (b/135945162)
Fehlerkorrekturen
- Es wurde ein
NullPointerExceptionbehoben, der beim Einblenden einesFragmentTransactionauftrat, für dassetPrimaryNavigationFragment()vorreplace()verwendet wurde. (b/134673465)
Version 1.1.0
Version 1.1.0
5. September 2019
androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 und androidx.fragment:fragment-testing:1.1.0 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 1.0.0
- fragment-testing: Das
fragment-testing-Artefakt stellt eineFragmentScenario-Klasse zum Testen eines Fragments in Isolation bereit. Weitere Informationen finden Sie in der Dokumentation zum Testen der Fragmente Ihrer App. - FragmentFactory: Sie können jetzt eine
FragmentFactoryfür eineFragmentManagerfestlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Dadurch entfällt die strenge Anforderung, einen Konstruktor ohne Argumente zu haben. - Kotlin-Eigenschaftsdelegaten für ViewModels: Das
fragment-ktx-Artefakt enthält jetzt zwei Kotlin-Eigenschaftsdelegaten:by viewModels()für den Zugriff auf ViewModels, die dem einzelnen Fragment zugeordnet sind, undby activityViewModels()für den Zugriff auf ViewModels, die auf die Aktivität beschränkt sind. - Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()für einFragmentTransactionaufrufen. Diese ersetzt die jetzt eingestelltesetUserVisibleHint().FragmentPagerAdapterundFragmentStatePagerAdapterhaben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. - FragmentActivity-LayoutId-Konstruktor: Unterklassen von
FragmentActivitykönnen jetzt optional einen Konstruktor fürFragmentActivityaufrufen, der eineR.layout-ID akzeptiert. Diese gibt das Layout an, das als Inhaltssicht festgelegt werden soll. Dies ist eine Alternative zum Aufrufen vonsetContentView()inonCreate(). Die Anforderung, dass Ihre Unterklasse einen Konstruktor ohne Argumente haben muss, bleibt davon unberührt. - Fragment-LayoutId-Konstruktor: Unterklassen von
Fragmentkönnen jetzt optional einen Konstruktor fürFragmentaufrufen, der eineR.layout-ID akzeptiert. Diese gibt das Layout an, das für dieses Fragment verwendet werden soll. Das Überschreiben vononCreateView()ist dann nicht mehr erforderlich. Das aufgeblähte Layout kann inonViewCreated()konfiguriert werden. - Mit Zeitüberschreitung verschieben: Es wurde eine neue Überlastung von
postponeEnterTransition()hinzugefügt, die eine Zeitüberschreitung in Anspruch nimmt.
Version 1.1.0-rc04
7. August 2019
androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 und androidx.fragment:fragment-testing:1.1.0-rc04 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt werden. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 und androidx.fragment:fragment-testing:1.1.0-rc03 werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das beim mehrmaligen Aufrufen von
postponeEnterTransition()mit einem Zeitlimit vorherige Zeitlimits nicht abgebrochen wurden. (b/137797118)
Version 1.1.0-rc02
17. Juli 2019
androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 und androidx.fragment-testing:fragment:1.1.0-rc02 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Absturz in
FragmentPagerAdapterundFragmentStatePagerAdapterbeim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
Version 1.1.0-rc01
2. Juli 2019
androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 und androidx.fragment:fragment-testing:1.1.0-rc01 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn während der Übergabe
show()- oderhide()-Vorgänge verwendet werden. (b/133385058) - Es wurde ein
NullPointerExceptionbehoben, der beim Einblenden einesFragmentTransactionauftrat, für dassetPrimaryNavigationFragment()vorreplace()verwendet wurde. (b/134673465)
Version 1.1.0-beta01
5. Juni 2019
androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 und androidx.fragment:fragment-testing:1.1.0-beta01 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
androidx.lifecycle.Lifecycle-Callbacks (insbesondere in Bezug aufSTARTED,RESUMED,PAUSED,STOPPEDundDESTROYED) für verschachtelte Fragmente sind jetzt richtig verschachtelt. (b/133497591)OnBackPressedCallback-Instanzen, die imonCreate()eines Fragments registriert sind, haben jetzt ordnungsgemäß Vorrang vor dem untergeordneten FragmentManager. (b/133175997)- Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
- Fragment-Animationen und ‑Übergänge werden jetzt ignoriert, wenn
animateLayoutChanges="true"verwendet wird. Dadurch wird ein Problem behoben, bei dem Fragmente nicht richtig zerstört wurden. (b/116257087)
Version 1.1.0-alpha09
16. Mai 2019
androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 und androidx.fragment:fragment-testing:1.1.0-alpha09 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Fragmente erhalten jetzt einen Callback für eine neue
onPrimaryNavigationFragmentChanged(boolean)-Methode, wenn sich das primäre Navigationsfragment ändert. aosp/960857
Fehlerkorrekturen
- Menüelemente, die von einem untergeordneten Fragment eingefügt wurden, werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013
Version 1.1.0-alpha08
7. Mai 2019
androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 und androidx.fragment:fragment-testing:1.1.0-alpha08 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diese Version ist nicht mit Preferences 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Wenn Sie diese Version von „Fragments“ verwenden, führen Sie bitte ein Upgrade auf „Preferences“ 1.1.0-alpha05 durch.
Neue Funktionen
- Es wurde eine neue Überladung von
postponeEnterTransition()hinzugefügt, die ein Zeitlimit akzeptiert. Nach Ablauf des Zeitlimits ruft das Fragment automatischstartPostponedEnterTransition()auf. b/120803208
API-Änderungen
- Breaking Change: Die zuvor verworfene Methode
FragmentFactoryinstantiate, die einBundleakzeptierte, wurde entfernt. aosp/953856 - Funktionsgefährdende Änderung: Die Konstanten
RESUME_ONLY_CURRENT_FRAGMENTundUSE_SET_USER_VISIBLE_HINTinFragmentPagerAdapterundFragmentStatePagerAdapterwurden inBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTbzw.BEHAVIOR_SET_USER_VISIBLE_HINTumbenannt. aosp/954782
Fehlerkorrekturen
- Fragmente, deren Lebenszyklus über
setMaxLifecycle()begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Status erreichen. b/131557151 - Bei Verwendung von
setMaxLifecycle(Lifecycle.State.CREATED)wird die Ansicht von Fragmenten ordnungsgemäß zerstört. aosp/954180
Version 1.1.0-alpha07
25. April 2019
androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 und androidx.fragment:fragment-testing:1.1.0-alpha07 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()für einFragmentTransactionaufrufen. Diese ersetzt die jetzt eingestelltesetUserVisibleHint().FragmentPagerAdapterundFragmentStatePagerAdapterhaben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)
API-Änderungen
moveToState(STARTED)aufFragmentScenariokann jetzt nur noch auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)
Geändertes Verhalten
- Aufgrund von b/129907905 erhalten Fragmente im Backstack keinen Callback für
onCreateView(), wenn die Hosting-Aktivität neu erstellt wird.onCreateView()wird jetzt nur noch aufgerufen, wenn das Fragment sichtbar wird (d.h. wenn der Backstack entfernt wird).
Fehlerkorrekturen
- Es wurde ein Problem behoben, das beim Verwenden eines
<fragment>-Tags in XML und descontentLayoutId-Konstruktors vonFragmentActivityoderAppCompatActivityauftrat. (b/129907905) - Ein Problem wurde behoben, bei dem Fragmente im Backstack nach einer Konfigurationsänderung nicht mindestens in den Status
CREATEDverschoben wurden. Dadurch wurden ViewModels und untergeordnete beibehaltene Fragmente nicht richtig verworfen. (b/129593351) - Ein Absturz in
restoreSaveStatewurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824) - Es wurden Probleme behoben, bei denen ein mit einem Fragment-Lebenszyklus hinzugefügtes
OnBackPressedCallbacknicht aufgerufen wurde, wenn dasFragmentManagereinen Backstack hatte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209) - Für Animationen wird in Fragmenten nicht mehr
LAYER_TYPE_HARDWAREerzwungen. Wenn Sie eine Animation für die Hardwareebene benötigen, müssen Sie sie in Ihre Animation einfügen. (b/129486478)
Version 1.1.0-alpha06
3. April 2019
androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 und androidx.fragment:fragment-testing:1.1.0-alpha06 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Ausnahmen, die von FragmentManager ausgelöst werden, enthalten jetzt den Namen des Fragments in der Meldung. (b/67759402)
API-Änderungen
FragmentundFragmentActivityenthalten jetzt einen zweiten Konstruktor, der ein@LayoutRes intakzeptiert. Damit wird das bisherige Verhalten ersetzt, bei dem Ihre Klasse mit@ContentViewannotiert wurde. Dieses Vorgehen funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)- Die
onActivityResult()von FragmentActivity ist jetzt korrekt als@CallSupermarkiert. (b/127971684) - Die
instantiate-Methode von FragmentFactory, die ein Bundle-Argument akzeptiert, wurde eingestellt. Apps sollten die neueinstantiate-Überladung verwenden, die kein Bundle akzeptiert. (b/128836103) FragmentScenario-Methoden sind jetzt korrekt mit@StyleResannotiert. (aosp/924193)FragmentTabHostwurde eingestellt. (b/127971835)- Die
getThemedContext()von FragmentActivity wurde entfernt. (aosp/934078)
Fehlerkorrekturen
- Ein Regressionsproblem in Version 1.1.0-alpha05 wurde behoben, das dazu führte, dass das eingehende Fragment auf dem Bildschirm blinkte. (b/129405432)
- Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von popBackStack- und replace-Vorgängen verloren ging. (b/124332597)
- Es wurde ein Problem behoben, das beim Wiederherstellen des Fragmentstatus bei der Verwendung von
@ContentView-Konstruktoren in der Aktivität aufgetreten ist. (b/127313094) - Die Logik von
setTargetFragment()wurde korrigiert, wenn ein vorhandenes Zielfragment durch ein Fragment ersetzt wird, das noch nicht an den FragmentManager angehängt ist. (aosp/932156)
Version 1.1.0-alpha05
13. März 2019
androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 und androidx.fragment:fragment-testing:1.1.0-alpha05 sind veröffentlicht. Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
@ContentView-Anmerkungssuchen werden jetzt im Cache gespeichert (b/123709449).
Geändertes Verhalten
- Wenn Sie
remove(),hide(),show(),detach()undsetPrimaryNavigationFragment()mit einem Fragment aufrufen, das an einen anderen FragmentManager angehängt ist, wird jetzt eineIllegalStateExceptionausgelöst, anstatt dass der Vorgang ohne Fehlermeldung fehlschlägt (aosp/904301).
Fehlerkorrekturen
onNewIntentfürFragmentActivityist jetzt korrekt mit@CallSupergekennzeichnet (b/124120586)- Ein Problem wurde behoben, bei dem die
onDismiss()vonDialogFragmentbei Verwendung vongetDialog().dismiss()odergetDialog().cancel()zweimal aufgerufen werden konnte (b/126563750).
Version 1.1.0-alpha04
7. Februar 2019
androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 und androidx.fragment:fragment-testing 1.1.0-alpha04 sind veröffentlicht.
Neue Funktionen
- Es wurde Unterstützung für die Klassenannotation
@ContentViewhinzugefügt, mit der Sie angeben können, welche Layout-XML-Datei als Alternative zum Überschreiben vononCreateView()aufgebläht werden soll. Es wird empfohlen, sich ähnliche Arbeiten inonViewCreated()anzusehen. (aosp/837619) fragment-testinghängt jetzt vonandroidx.test:core-ktx1.1.0 (stabil) ab (b/121209673).- Sie können jetzt
openActionBarOverflowOrOptionsMenumitFragmentScenarioverwenden, um Optionsmenüs zu testen, die in Fragmenten gehostet werden (b/121126668).
API-Änderungen
- Die Methode
requireArguments()wurde hinzugefügt, die ein@NonNull Bundlezurückgibt oder einIllegalStateExceptionauslöst (b/121196360). - Es wurde ein Hinweis hinzugefügt, dass
getLifecycle(),getViewLifecycleOwner()undgetViewLifecycleOwnerLiveData()nicht überschrieben werden sollten und in einem zukünftigen Release endgültig werden. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880714) - Es wurde ein Hinweis hinzugefügt, dass
getViewModelStore()nicht überschrieben werden sollte und in einem zukünftigen Release endgültig festgelegt wird. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880713) - Ein Problem mit der binären Kompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)
Fehlerkorrekturen
- Ziel-Fragmente werden korrekt gelöscht, wenn Sie
nullansetTargetFragment()übergeben. (aosp/849969) - Ein Problem wurde behoben, durch das Ziel-Fragments in oder nach
onDestroy()manchmal nicht verfügbar waren. (b/122312935) - Die onDismiss()-Methode von DialogFragment wird jetzt vor
onDestroy()aufgerufen. (aosp/874133) (aosp/890734)
Version 1.1.0-alpha03
17. Dezember 2018
Neue Funktionen
- Das Fragment implementiert jetzt
BundleSavedStateRegistryOwnerund hängt von der neu veröffentlichten SavedState-Bibliothek ab [aosp/824380]. - Es wurde ein
by activityViewModels-Kotlin-Property-Delegate hinzugefügt, um ViewModels abzurufen, die mit der enthaltenden Aktivität verknüpft sind [b/119050253] - Der
by viewModels-Kotlin-Property-Delegate wurde erweitert, um eine optionale Lambda-Methode zum Abrufen vonViewModelStoreOwnerzu verwenden. So können Sie das übergeordnete Fragment oder ein anderes benutzerdefiniertesViewModelStoreOwnermit Code wieval viewModel: MyViewModel by viewModels(::requireParentFragment)übergeben. [b/119050253]
API-Änderungen
- Mit
FragmentScenariokönnen Sie jetzt ein Design wieTheme.AppCompatangeben [b/119054431]. Dies ist eine funktionsgefährdende Änderung. - Die Methode
requireView()wurde hinzugefügt, die eine@NonNull Viewzurückgibt oder eineIllegalStateExceptionauslöst. [b/120241368] - Die Methode
requireParentFragment()wurde hinzugefügt. Sie gibt ein@NonNull Fragmentzurück oder löst eineIllegalStateExceptionaus. [b/112103783]
Fehlerkorrekturen
- Fehler „IllegalStateException: Failure saving state“ behoben b/120814739
- Fragmente, die aus dem gespeicherten Instanzstatus wiederhergestellt werden, erhalten jetzt immer einen nicht leeren
Bundle[b/119794496] - Entfernte Fragmente verwenden ihr
Lifecycle-Objekt nicht mehr, wenn sie wieder hinzugefügt werden [b/118880674]
Version 1.1.0-alpha02
3. Dezember 2018
Neue Funktionen
- Mit den Kotlin-Erweiterungen von „FragmentScenario“ können Sie jetzt ein Lambda für die Fragmentkonstruktion verwenden, anstatt eine
FragmentFactory-Instanz zu übergeben. (aosp/812913)
Fehlerkorrekturen
- Es wurde eine IllegalStateException behoben, die bei Verwendung verschachtelter Fragmente im Backstack auftrat (b/119256498).
- Absturz bei Verwendung von
FragmentScenario.recreate()mit einemFragmentFactorybehoben (aosp/820540) - Ein Problem wurde behoben, durch das auf Zielfragmente nicht zugegriffen werden konnte, nachdem das Fragment entfernt wurde (aosp/807634).
Version 1.1.0-alpha01
5. November 2018
Dies ist die erste Version des fragment-testing-Artefakts und FragmentScenario, das auf den androidx.test:core-APIs basiert. Weitere Informationen finden Sie in der Dokumentation zum Testen von Fragmenten.
Neue Funktionen
- Neue FragmentScenario-Klasse zum isolierten Testen von Fragmenten.
- Sie können jetzt eine
FragmentFactoryfür jedesFragmentManagerfestlegen, um zu steuern, wie neue Fragmentinstanzen instanziiert werden. - Es wurde ein neuer
by viewModels()-Kotlin-Property-Delegate zum Abrufen von ViewModels aus einem Fragment hinzugefügt. - Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt in der
onStop()eines Fragments abgebrochen.
API-Änderungen
- Die Nullable-Annotationen wurden in der gesamten Fragment-API deutlich erweitert.
Fehlerkorrekturen
- Ein Problem wurde behoben, das dazu führte, dass Fragmentvorgänge in LiveData fehlschlugen. (b/77944637)
Bekannte Probleme
- Auf Target-Fragmente kann nicht mehr zugegriffen werden, nachdem ein Fragment aus dem FragmentManager entfernt wurde.
fragment-testingist abhängig vonandroidx.test:core:1.0.0-beta01statt von der korrektenandroidx.test:core:1.0.0.