Fragment
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 23. September 2026 | 1.9.1 | - | - | - |
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 unter Google-Repository bei Maven.
Fügen Sie die Abhängigkeiten für die benötigten Artefakte in der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Cool
dependencies { def fragment_version = "1.9.1" // 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.9.1" // 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. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.9
Version 1.9.1
23. September 2026
androidx.fragment:fragment-*:1.9.1 ist veröffentlicht. Version 1.9.1 enthält diese Commits.
Version 1.9.0
12. August 2026
androidx.fragment:fragment-*:1.9.0 ist veröffentlicht. Version 1.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.8.0:
Fragmentimplementiert jetzt die SchnittstelleContextAwareund kann verwendet werden, um Code auszuführen, wenn das Fragment angehängt wird.- Die zusammensetzbare Funktion
AndroidFragmentakzeptiert jetzt einenmaxLifecycle-Parameter, mit dem Sie den Lebenszyklusstatus des eingebettetenFragmentbegrenzen können. - Die
Fragment-Bibliothek unterstützt jetzt die Systemverfolgung des Lifecycle-Events überJetpack Tracing.
Version 1.9.0-rc01
29. Juli 2026
androidx.fragment:fragment-*:1.9.0-rc01 ist veröffentlicht. Version 1.9.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Bei Verwendung von
FragmentScenario.launchInContainerbefindet sich das zu testende Fragment jetzt in einemFragmentContainerView. (Ia6273, b/531550353)
Version 1.9.0-alpha02
01. Juli 2026
androidx.fragment:fragment-*:1.9.0-alpha02 ist veröffentlicht. Version 1.9.0-alpha02 enthält diese Commits.
API-Änderungen
- Fügen Sie der zusammensetzbaren Funktion
AndroidFragmenteinenmaxLifecycle-Parameter hinzu. So können Sie den Lebenszyklusstatus des eingebettetenFragmentbegrenzen und haben mehr Kontrolle über sein Verhalten in komplexen UI-Setups wie Pager oder Tabs. (Ie99b5, b/526109804) - Die Fragment-Bibliothek unterstützt jetzt das System-Tracing des Lifecycle-Events über Jetpack Tracing. (Ibc63b, b/112161409)
Version 1.9.0-alpha01
17. Juni 2026
androidx.fragment:fragment-*:1.9.0-alpha01 ist veröffentlicht. Version 1.9.0-alpha01 enthält diese Commits.
API-Änderungen
- Das Fragment implementiert jetzt die
ContextAware-Schnittstelle und kann verwendet werden, um Code auszuführen, wenn das Fragment angehängt wird. (I38019, b/477255355)
Fehlerkorrekturen
- Ein Absturz in Fragment wurde behoben, der auftrat, wenn die Aktivität während einer vorhersagenden Zurück-Geste in den Hintergrund gesendet wurde. (I55734, b/389589678)
- „UnsafeFragmentLifecycleObserverDetector“ wird nicht mehr innerhalb der Komposition ausgeführt. (Ic4176, b/501504696)
- [Ab Fragment 1.8.9] Ein Problem wurde behoben, durch das das Abbrechen einer intelligenten „Zurück“-Geste, die einen Ausblendvorgang auslöst, dazu führte, dass die nachfolgende Geste bei Verwendung von Animators nicht richtig animiert wurde. (I0a400, b/384765586)
- [Ab Fragment 1.8.9] Es wurde ein Fehler behoben, bei dem eine Kombination aus setMaxLifecycle und popBackStack dazu führen konnte, dass das oberste Fragment nicht in den Status RESUMED wechselte. (I3448b, b/406127576)
- [Aus Fragment 1.8.8] Ein Problem wurde behoben, bei dem FragmentManager beim Speichern des Status von Fragmenten, die mit
setMaxLifecycle(Lifecycle.State.INITIALIZED)hinzugefügt wurden, abgestürzt ist. Da diese Fragmente nieonCreate()durchlaufen haben, haben sie keinen gespeicherten Status mehr undonSaveInstanceState()wird nicht aufgerufen. (I6e37a, b/408163315) - [Ab Fragment 1.8.7] – Ein Problem wurde behoben, bei dem sich FragmentManager nach Pop- und Ersetzungsvorgängen im selben Frame nicht im richtigen Status befand, was in Verbindung mit der Funktion „Vorhersagende Zurück-Geste“ zu einem Absturz führen konnte. (I50ad1, b/380288461)
- [Ab Fragment 1.8.6] Die
setOnApplyWindowInsetsListener-Überschreibung von FragmentContainerView akzeptiert jetzt einen Null-Listener. (I575f0, b/282790626) - [Aus Fragment 1.8.5] Ein
IllegalStateExceptionwurde behoben, das durchsaveBackStackausgelöst wurde, aber erst, nachdem eine intelligente „Zurück“-Geste abgebrochen oder unterbrochen wurde. (I3387d, b/342419080) - [Ab Fragment 1.8.4] Ein
UninitializedPropertyAccessExceptioninAndroidFragmentwurde behoben, wenn die Klasse, die von IhrerAndroidFragment-Instanz verwendet wird, dynamisch ausgetauscht wird. (I12dea, b/365578408) - [Aus Fragment 1.8.4] Ein Problem wurde behoben, bei dem schnelles Drücken der System-Zurück-Taste oder schnelles Ausführen der Zurück-Geste zum Absturz von Fragmenten führte. (Ibc038, b/364804225, b/364914301)
- [Ab Fragment 1.8.4] Ein Problem in Fragmenten wurde behoben, bei dem das Unterbrechen einer vorhersagenden Rückwärtsbewegung den Fragmentmanager in einen undefinierten Zustand versetzte und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
- [Aus Fragment 1.8.3]
AndroidFragmentstürzt nicht mehr ab, wenn es der Komposition hinzugefügt wird, während der Status der enthaltenden Aktivität/des enthaltenden Fragments bereits gespeichert ist. (I985e9, b/356643968) - [Aus Fragment 1.8.2] Wenn ein System-Back ausgelöst wird, während der FragmentManager ausstehende Vorgänge hat, wird keine OutOfBoundsException mehr ausgelöst. (I9ba32, b/342316801)
- [Ab Fragment 1.8.2]
AndroidFragmentverarbeitet jetzt Fälle korrekt, in denen das übergeordnete Fragment auf den Fragment-Backstack gelegt wird. So werden Probleme vom Typ „No view found for id“ vermieden, wenn zu diesem Fragment zurückgekehrt wird. (I94608, b/347706985) - [Aus Fragment 1.8.2] Fragmente, die über die
FragmentTransaction.add-Methode hinzugefügt wurden, die einViewGroupverwendet, 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, b/347706985) - [Ab Fragment 1.8.1] Ein Problem wurde behoben, bei dem Fragmente ohne Container beim Starten einer vorhersagenden Zurück-Geste sofort DESTROYED wurden. (If6b83, b/345244539)
Externer Beitrag
- „fragment-ktx“ in die Fragmentbibliothek zusammenführen Alle Kotlin-Erweiterungen sind jetzt Teil des Hauptartefakts für Fragmente. „fragment-ktx“ ist jetzt ein leeres Artefakt für die Kompatibilität. Vielen Dank, Jake Wharton! (Idabaa)
Version 1.8
Version 1.8.9
13. August 2025
androidx.fragment:fragment-*:1.8.9 ist veröffentlicht. Version 1.8.9 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das beim Abbrechen einer intelligenten „Zurück“-Touchgeste, die einen Ausblendvorgang auslöst, 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 wurde. (I3448b, b/406127576)
Version 1.8.8
4. Juni 2025
androidx.fragment:fragment-*:1.8.8 ist veröffentlicht. Version 1.8.8 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
FragmentManagerbeim Speichern des Status von Fragmenten, die mitsetMaxLifecycle(Lifecycle.State.INITIALIZED)hinzugefügt wurden, abstürzte. Da diese Fragmente nieonCreate()durchlaufen haben, ist kein Status mehr gespeichert undonSaveInstanceState()wurde nicht aufgerufen. (I6e37a)
Version 1.8.7
20. Mai 2025
androidx.fragment:fragment-*:1.8.7 ist 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 Zustand war. Dies konnte in Verbindung mit dem Entfernen des Backstacks überpopBackStackoder die intelligente „Zurück“-Touchgeste zu einem Absturz führen. (I50ad1) - Ein Absturz wurde behoben, der durch die Verwendung von AndroidX Transitions und den Versuch, eine nicht gestartete Transition durch schnelle, aufeinanderfolgende Fragmenttransaktionen abzubrechen, verursacht wurde. Die AndroidX Transition-Bibliothek hat den Übergangszustand nicht richtig gelöscht. (siehe b/414612221). (Ib5235)
Version 1.8.6
12. Februar 2025
androidx.fragment:fragment-*:1.8.6 ist 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 ist veröffentlicht. Version 1.8.5 enthält diese Commits.
Fehlerkorrekturen
- Ein
IllegalStateException, das durchsaveBackStackausgelöst wurde, wurde erst nach dem Abbrechen oder Unterbrechen einer Vorhersage-Geste für „Zurück“ behoben. (I3387d, b/342419080)
Version 1.8.4
2. Oktober 2024
androidx.fragment:fragment-*:1.8.4 ist 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-Taste oder das schnelle Ausführen der Zurück-Geste zum Absturz von Fragmenten führte, wenn AndroidX Transitions verwendet wurden. (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, wenn die Klasse, die von IhrerAndroidFragment-Instanz verwendet wird, dynamisch ausgetauscht wird. (I12dea)
Version 1.8.3
4. September 2024
androidx.fragment:fragment-*:1.8.3 ist 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 ist 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“ (Keine Ansicht für ID gefunden) 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 ist veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das 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 ist 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 Fragmentstatus wird automatisch übernommen. Diese Methode sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei demAndroidViewBindingzum Inflate eines Fragments verwendet wurde. - Der
onBackStackChangeCancelled-Callback auf derOnBackStackChangedListener-Schnittstelle desFragmentManagerwird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManagerausgelöst. Dadurch wird das Timing desonBackStackChangeCommitted-Callbacks angeglichen.
Version 1.8.0-rc01
29. Mai 2024
androidx.fragment:fragment-*:1.8.0-rc01 ist 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 er zeitlich an denonBackStackChangeCommitted-Callback angeglichen. (I5ebfb, b/332916112)
Version 1.8.0-beta01
14. Mai 2024
androidx.fragment:fragment-*:1.8.0-beta01 ist veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ab Fragment
1.7.1: Die vorhersagende Zurück-Geste wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Ein Problem wurde behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem schwarzen Bildschirm führte. (I43037, b/339169168)
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02 ist veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.7.0-rc02: Added logs to indicate why setting asharedElementwithout any other transitions will fail to run. (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 ist 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. Sie übernimmt automatisch das Speichern und Wiederherstellen des Status des Fragments. Diese Klasse kann als direkter Ersatz für AndroidViewBindingComposableverwendet werden.(b/312895363, Icf841)
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener-APIs wurde aktualisiert. Sie enthält jetzt Informationen dazu, wann die APIs 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 ist veröffentlicht. Version 1.7.1 enthält diese Commits.
Fehlerkorrekturen
- Die Vorhersage für die Zurück-Geste wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Dadurch wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein leerer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.7.0
1. Mai 2024
androidx.fragment:fragment-*:1.7.0 ist veröffentlicht. Version 1.7.0 enthält diese Commits.
Unterstützung für die Vorhersage der Zurück-Geste
- Fragments unterstützen jetzt die vorhersagende Rücktaste 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 suchen, bevor sie die Transaktion durch Abschluss der Geste bestätigen oder abbrechen.
| Übergangssystem | XML-Ressource | Unterstützung der intelligenten „Zurück“-Geste |
|---|---|---|
Animation |
R.anim |
Nein |
Animator |
R.animator |
Ja |
Framework Transition |
R.transition |
Nein |
AndroidX Transition mit Transition 1.4.1 oder niedriger |
R.transition |
Nein |
AndroidX Transition mit Transition 1.5.0 |
R.transition |
Ja |
Wenn Sie nach der Aktivierung der intelligenten „Zurück“-Geste Probleme mit der Unterstützung der intelligenten „Zurück“-Geste in Fragmenten feststellen, melden Sie ein Problem für Fragment und fügen Sie ein Beispielprojekt bei, in dem das Problem reproduziert wird. Sie können die intelligente „Zurück“-Geste deaktivieren, indem Sie FragmentManager.enabledPredictiveBack(false) im onCreate() Ihrer Activity verwenden.
FragmentManager.OnBackStackChangedListener() bietet jetzt die onBackStackChangeProgressed() und onBackStackChangeCancelled() zum Empfangen von Vorhersage- und abgebrochenen Ereignissen für die intelligente „Zurück“-Geste.
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 ist veröffentlicht. Version 1.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Logs hinzugefügt, die angeben, warum das Festlegen eines
sharedElementohne andere Übergänge fehlschlägt. (Iec48e) - Es wurde ein Fehler behoben, durch den es zu einem Absturz kam, wenn ein nicht suchbares gemeinsames Element zu Transaktionen hinzugefügt wurde, bei denen alle anderen Übergänge suchbar waren. 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 ist 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 ist veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallbackwird jetzt in Kotlin geschrieben, damit die Null-Zulässigkeit des generischen Typs des Hosts mit der Null-Zulässigkeit des Rückgabetyps vononGetHost()übereinstimmt. (I40af5)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein Fragment, das sich nicht in einem Container befindet, nie zerstört wurde, wenn eine Vorhersage-Geste für „Zurück“ für dieses Fragment ausgeführt wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand verschoben. (Ida0d9)
- Es wurde ein Problem in Fragmenten behoben, bei dem durch Unterbrechen eingehender Übergänge mit einer Vorhersage-Geste für die Zurück-Funktion die eingehende Ansicht zerstört wurde und ein leerer Bildschirm angezeigt wurde. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7. Februar 2024
androidx.fragment:fragment-*:1.7.0-alpha10 ist veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben. Wenn die Unterstützung für die intelligente „Zurück“-Geste 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 ist 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 der 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- und abgebrochenen Ereignissen für die intelligente „Zurück“-Geste. (214b87)
Bekanntes Problem
- Wenn Sie die Unterstützung für die Vorhersage von „Zurück“ von Fragment für
Animatoroder AndroidX Transition verwenden, lösen Fragmente eineNullPointerExceptionaushandleOnBackProgressedaus, 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 ist 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 ist 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 verursacht wurde, ohne auch eine Enter-/Exit-Übergangsanimation festzulegen. (I8472b) - Über Fragment
1.6.2: Wenn das Fragment einesFragmentContainerVieweingefügt 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 ist veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Abhängigkeitsupdate
- „Fragments“ wurde aktualisiert und hängt jetzt von der neuen
animateToStartAPI ab, die in Transition1.5.0-alpha04hinzugefügt wurde.
Version 1.7.0-alpha05
20. September 2023
androidx.fragment:fragment-*:1.7.0-alpha05 ist veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragments unterstützen jetzt die intelligente „Zurück“-Geste, wenn Androidx Transitions verwendet wird. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Transition zurückkehren, bevor Sie die Transaktion über die abgeschlossene 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 durch ein Problem in der Transition-Bibliothek verursacht werden. (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 intelligente „Zurück“-Geste deaktivieren, indem Sie
FragmentManager.enabledPredictiveBack(false)imonCreate()Ihrer Activity verwenden.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04 ist 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 „intelligente „Zurück“-Geste“ mit Fragmenten auftrat. Wenn versucht wurde, zweimal kurz hintereinander zum vorletzten Fragment im Back Stack zurückzukehren, stürzte die App ab. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03 ist 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-Button-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 ist veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie ab API 34 Fragmente mit der Vorhersage-Zurück-Geste 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 ist veröffentlicht. Diese Version wird in einem internen Zweig entwickelt.
Neue Funktionen
- Fragments unterstützen jetzt die intelligente „Zurück“-Geste in der App, wenn
Animatorverwendet wird. So können Sie mit der Zurück-Geste das vorherige Fragment mit Ihrem benutzerdefinierten Animator aufrufen, bevor Sie die Transaktion über die abgeschlossene Geste 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 ist veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment eines
FragmentContainerVieweingefügt 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 ist 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 ist 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 privaten Bibliotheksstatus (benutzerdefinierteParcelable-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt. Letzterer 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 eine neueWrongNestedHierarchyViolationhinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Fragments verschachtelt ist, aber nicht derchildFragmentManagerdes übergeordneten Fragments 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 hängt jetzt von SavedState
1.2.1ab. - Das Fragment hängt jetzt von ProfileInstaller
1.3.0ab. Das
fragment-testing-manifest-Artefakt trennt die Manifesteinträge von den restlichen 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")So werden Konflikte aufgrund von Versionsabweichungen zwischen
fragment-testingundandroidx.testvermieden.
Version 1.6.0-rc01
10. Mai 2023
androidx.fragment:fragment-*:1.6.0-rc01 ist veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
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 ist 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 Callbacks
onBackStackChangeStartedundonBackStackChangeCommittedsenden jetzt nur 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 ist 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 scheitern. (Ic9665, b/236538905)
Fehlerkorrekturen
- Ein Fehler in
FragmentManagerwurde behoben, durch den das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668) - Die
OnBackStackChangedListener-,onBackStackChangeStarted- undonBackStackChangeCommitted-Callbacks werden 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 ist veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Der Zeitpunkt des
OnBackStackChangedListener.onBackStackChangeCommited-Callbacks wurde so angepasst, dass er vor der Ausführung von Fragmentvorgängen erfolgt. So wird sichergestellt, dass an den Callback nie ein Fragment übergeben wird, das getrennt ist. (I66a76, b/273568280)
Fehlerkorrekturen
- Fragment
1.5.6: Ein Problem wurde behoben, durch das der Aufruf vonclearFragmentResultListenerinnerhalb einessetFragmentResultListenernicht funktionierte, wenn dasLifecyclebereitsSTARTEDwar und ein Ergebnis bereits verfügbar war. (If7458)
Abhängigkeitsupdates
- Das Fragment hängt jetzt von Lifecycle
2.6.1ab. (586fe7) - Das Fragment hängt jetzt von SavedState
1.2.1ab. (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 ist 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 ist veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Verhaltensänderung
- Der neue
onBackStackChangedStarted-Callback inFragmentManagersonBackStackChangedListenerwird jetzt ausgeführt, bevor Fragmente in ihre Zielstatus wechseln. (I34726)
Version 1.6.0-alpha05
8. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha05 ist veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener-Schnittstelle bietet jetzt zwei zusätzliche Callbacks,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 ist veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
FragmentStrictModehat eine neueWrongNestedHierarchyViolationhinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Fragments verschachtelt ist, aber nicht derchildFragmentManagerdes übergeordneten Fragments 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 restlichen 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: DerViewModel-Zustand wird nicht mehr fälschlicherweise als Teil des gespeicherten Zustands 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
- Bei Klassen, die
DialogFragmenterweitern, muss jetzt „super“ in denonDismiss()-Überschreibungen aufgerufen werden. (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-Transaktion 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 in den privaten Bibliotheksstatus (benutzerdefinierteParcelable-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Letzterer 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 geführt hat. (b/237567009)
Abhängigkeitsupdate
- Ab Fragment
1.5.1: Die Fragment-Bibliothek hängt jetzt von Lifecycle2.5.1ab. (Id204c) - Aus 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 vonsetFragmentResultListenernicht funktionierte, wennLifecyclebereitsSTARTEDwar 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
ViewModel-Status wird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 und androidx.fragment:fragment-testing:1.5.4 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 ein benutzerdefiniertes
FragmentControllermit einem Host verwendet wurde, der keine Provider-Callback-Schnittstelle (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) implementiert, und dessen 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 Lint abstürzte, wenn die mit AGP 7.4 gebündelte Lint-Version verwendet wurde. (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: Die Art und Weise, wie Fragmente ihren Instanzstatus speichern, hat sich geändert. 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 desFragmentManagergespeichert. - Der Status, der jedem einzelnen Fragment zugeordnet ist, wird jetzt separat vom internen Status von
FragmentManagergespeichert. So können Sie die Menge des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs imFragment-Debugging-Log korrelieren.
Weitere Änderungen
- Mit
FragmentStrictModekönnen private Drittanbieter-Fragmente bestimmte Strafen für Verstöße umgehen, indem sieallowViolation()mit dem Klassennamen verwenden. - 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 Status, der jedem einzelnen Fragment zugeordnet ist, wird jetzt separat vom internen Status von
FragmentManagergespeichert. So können Sie die Menge des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Fragment-Debug-Logging in Beziehung setzen. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 und androidx.fragment:fragment-testing:1.5.0-beta01 sind veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragmenthat eine neuedismissNow-Methode hinzugefügt, diecommitNowverwendet, um Parität mit dershowNow-Funktion zu erreichen. Dadurch wird dieDialognicht sofort geschlossen, sondern nur der Status derFragmentManagersynchron 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 von
FragmentManagergespeichert. So wird deutlicher, 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 verworfen. 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
- Für
DialogFragmentwird jetztComponentDialogals Standarddialog verwendet, 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
- Mit
FragmentStrictModekönnen private Drittanbieter-Fragmente bestimmte Strafen für Verstöße umgehen, indem sieallowViolation()mit dem Klassennamen verwenden. (I8f678)
Version 1.5.0-alpha01
26. Januar 2022
androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 und androidx.fragment:fragment-testing:1.5.0-alpha01 sind veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragmentist jetzt in ViewModel CreationExtras integriert, die als Teil von Lifecycle2.5.0-alpha01eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Fragment
1.4.1:FragmentContainerViewlöst keine Ausnahme für den illegalen 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 diedefaultViewModelProviderFactorydieses Inhabers verwendet, wenn keine benutzerdefinierteViewModelProvider.Factoryangegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513) - Ein Absturz wurde behoben, der auftrat, wenn zum ersten Mal über einen
registerForActivityResult()-Callback einesFragmentauf einViewModelzugegriffen wurde. (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 ein benutzerdefiniertes
ownerProducer-Lambda mit der Lazy-Funktionby viewModels()verwenden, wird jetzt dasdefaultViewModelProviderFactorydieses Inhabers verwendet, wenn kein benutzerdefiniertesViewModelProvider.Factoryangegeben ist. Andernfalls wird 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 einen Logeintrag 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 „Strafen“ ausgelöst werden, kann für einFragmentManagerüber die neue MethodesetStrictModePolicy()festgelegt werden. Diese Richtlinie gilt für dasFragmentManagerund 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 zuletzt dem Container hinzugefügt wurde. Hier wird dieselbe Logik wie beifindFragmentById()mit der ID desFragmentContainerViewverwendet, der Aufruf kann jedoch verkettet werden.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioimplementiert jetztCloseable. Sie können es also mit deruse-Methode von Kotlin oder mit try-with-resources verwenden.FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}wurde hinzugefügt, um anzugeben, ob die Standardanimation für Activity-Übergänge aus Ihrem Design für Fragment-Übergänge aktiviert werden soll.Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)wurde entfernt. Der neue Statusmanager ist jetzt die einzige verfügbare Option.
Mehrere Backstacks
Der FragmentManager verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, für die addToBackStack() verwendet wurde. So können Sie diese Transaktionen aus dem Stack entfernen und zum vorherigen Zustand zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In diesem Release 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 es asynchron ist und dazu führt, dass alle Fragmenttransaktionen mit diesem 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 inklusiv.- 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:
- Bei jeder Fragmenttransaktion muss
setReorderingAllowed(true)verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich geschlossen sein.Das bedeutet, dass sie nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen dürfen. 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 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 von
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)
Updates für die 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 Null-Zulässigkeit 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) - Der
UseGetLayoutInflater-Lint-Check 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 Wechseln zwischen Backstacks auftrat und als
IllegalStateExceptionbeim Wiederherstellen einesFragmentTransactionoder als zweite Kopie eines Fragments angezeigt wurde. (I9039f) - Ein Problem wurde behoben, bei dem
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 aufGONEfestgelegt, wennhide()verwendet wird und für die StammansichttransitionGroup=”true”festgelegt ist. (aosp/1766655, b/193603427) - Aus Fragment
1.3.6:FragmentActivityentsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den überschriebenen Lebenszyklus-Callbacks. (I6db7a)
Abhängigkeitsupdate
- Ab 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 auch inFragmentControllerverworfen. Wenn SieFragmentControllerverwenden, um Fragmente außerhalb vonFragmentActivityzu hosten, sollte IhrFragmentHostCallbacksSavedStateRegistryOwnerimplementieren. (Iba68e, b/188734238)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Aufruf von
saveBackStack()im Rahmen der Unterstützung mehrerer Backstacks fehlschlug, wenn er gleichzeitig mit der Ausführung einesFragmentTransactionerfolgte, in demreplace()verwendet wurde. (I73137) - Ein
NullPointerExceptionwurde behoben, das nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen bei Verwendung derrestoreBackStack()API für die Unterstützung mehrerer Backstacks auftrat. Außerdem wurde ein Problem behoben, bei demsetReorderingAllowed(true)nicht für alle Transaktionen geprüft wurde. (I8c593) - Ein Problem wurde behoben, bei dem
FragmentManagerden zuvor gespeicherten Zustand von Fragmenten fälschlicherweise auch dann wiederhergestellt hat, nachdem diese Fragmente ausFragmentManagerentfernt wurden. Dadurch ist der gespeicherte Zustand 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 Fragment StrictMode-Klassen
Violationwurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638)FragmentTagUsageViolationenthält jetzt eine detailliertere Fehlermeldung mit dem übergeordneten Container, dem das Fragment hinzugefügt werden sollte. (Ic33a7)WrongFragmentContainerViolationenthält jetzt eine detailliertere Fehlermeldung, die den Container angibt, dem das Fragment hinzugefügt wurde. (Ib55f8)- Die Anwendungsfallklassen für
TargetFragmentUsageViolationhaben 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 gesetzt 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 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
FragmentStrictModeBei aktiviertem Logging über dieFragmentManagerwerden Verstöße jetzt immer protokolliert, unabhängig von der aktuellen Richtlinie für den strengen Modus. (I02df6, b/187872638)FragmentStrictModeunterstützt jetzt das Ausschließen bestimmterFragment-Klassen aus dem strikten 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, und das entsprechende Fragment (If5118, b/187871150) finden. JedeViolationenthält Folgendes:WrongFragmentContainerViolationenthält jetzt dieViewGroup, der dieFragmenthinzugefügt werden sollte. (I83c75, b/187871150)TargetFragmentUsageViolationwurde inSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationundGetTargetFragmentRequestCodeUsageViolationerweitert.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 desFragmentContainerViewverwendet, aber der Aufruf kann 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 Activity-Übergänge aus Ihrem Design für Fragment-Übergänge 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 Stack entfernen und zum vorherigen Zustand 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 es asynchron ist und dazu führt, dass alle Fragmenttransaktionen mit diesem 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 inklusiv.- 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:
- Bei jeder Fragmenttransaktion muss
setReorderingAllowed(true)verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich geschlossen sein.Das bedeutet, dass sie nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen dürfen. 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 einen Logeintrag ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. Die FragmentStrictMode.Policy, mit der festgelegt wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann für ein FragmentManager über die neue Methode setStrictModePolicy() festgelegt werden. Diese Richtlinie gilt für das 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 verworfenesetUserVisibleHint()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. 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 mit try-with-resources verwenden. (#121, b/143774122)
Neue Lint-Prüfungen
- Der Lint-Check
UseGetLayoutInflaterwarnt 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 deronCreateDialog()-Methode einesDialogFragmentaufgerufen wird. Diese Listener gehören zumDialogFragmentselbst und 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 der 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) - Ab Fragment 1.3.4: Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragmentergebnis-Bundle abrufen. (I65932, b/187443158)
- Ab Fragment 1.3.4: Wenn Sie einen Übergang für ein gemeinsames Element für eine ViewGroup ausführen und
transitionGroupfür die ViewGroup auf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)
Externer Beitrag
- 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 entfernt wird. (I573dd, b/183634730) - Die Ansicht des Fragments wird jetzt richtig auf
GONEfestgelegt, wennhide()verwendet wird und für die StammansichttransitionGroup=”true”festgelegt ist. (aosp/1766655, b/193603427) FragmentActivityruft jetzt immer den gespeicherten Status als ersten Vorgang in den überschriebenen Lebenszyklus-Callbacks ab. (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 ein Regressionsfehler bei Übergängen mit gemeinsam genutzten Elementen behoben, der 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, wenn esgetDefaultViewModelProviderFactory()überschreibt (wie bei Fragmenten mit der Anmerkung@AndroidEntryPoint). 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 weitergeleitet. Dadurch werden Probleme mitBottomNavigationBar- undFloatingActionButton-Instanzen behoben. (I1bb78, b/186012452) - Sie können jetzt Ihr Parcelable-Objekt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Wenn Sie einen Übergang für ein gemeinsames Element für eine ViewGroup ausführen und
transitionGroupfür die ViewGroup auf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 und androidx.fragment:fragment-testing:1.3.3 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 View 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 (z. B. vonNavHostFragmentverwendet) 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-Zustandsmanager verarbeitet jetzt Exit-Ü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 sowohl
popBackStack()- als auchcommit()-Vorgänge gleichzeitig ausgeführt werden, wird die Richtung für alle Animationen jetzt durch den letzten Vorgang festgelegt. Bisher wurden einige Pop- und einige Enter-Animationen ausgeführt. (I7072e, b/181142246) - Bei Ansichten in einer Hierarchie mit gemeinsam genutzten Elementen wird der Übergangsname nicht mehr gelöscht, wenn ein Übergang mit gemeinsam genutzten Elementen erfolgt. (I4d4a6, b/179934757)
Abhängigkeitsupdates
- Fragment hängt jetzt von Activity 1.2.2 ab. Dadurch wird ein Problem mit dem Lint-Check
InvalidFragmentVersionForActivityResultvon Activity behoben, wenn Fragment 1.3.1 oder höher verwendet wird. - „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
- Dialoge 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 eingefügt wurden, werden jetzt nach einer Konfigurationsänderung richtig angezeigt. (Ie14c8, b/180538371) - Am Ende des Fragments
toString()gibt es kein zusätzliches}mehr (I54705, b/177761088). - Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß die JavaDoc-Dokumentation der Basismethode (I736ce, b/139548782).
- Die Dokumentation für
setFragmentResultundsetFragmentResultListenerwurde aktualisiert. Die Parameter akzeptieren keine Nullwerte mehr (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
<fragment>-Tag eingefügte Fragmente werden jetzt immer inRESUMEDeingefügt. (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 beim Umgang mit verzögerten Fragmenten behoben. Integration der Activity Result API: Unterstützung für die
ActivityResultRegistryAPI wurde hinzugefügt, 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 einer Aktivität abrufen.- In dieser Version 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 dieser Version 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.FragmentScenario-Verbesserungen: Die KlasseFragmentScenarioaus demfragment-testing-Artefakt wurde in Kotlin neu geschrieben und hat eine Reihe von Verbesserungen erhalten:FragmentScenarioverwendet jetztsetMaxLifecycle()zur Implementierung vonmoveToState(). 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
FragmentScenario-API vononFragmentin Form der reifizierten Kotlin-ErweiterungsmethodewithFragment, mit der Sie einen Wert zurückgeben können. Wichtig ist, dass Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst werden.
ViewTree-Support: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 Löschens 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
- Es wurde ein Problem 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 blinkte. (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 vor dem Erreichen vonLifecycleCREATEDzerstört wird. Dadurch werden Ausnahmen wie „no event down from INITIALIZED“ vermieden. (eda2bd, b/176138645) - Fragmente, die ein
Animatorverwenden, 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 durch einen Pop-Vorgang auftraten. (I952d8) - Ein Problem wurde behoben, bei dem 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 Ansichten des Fragment-Roots 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) - Das Beenden von Fragmenten, deren Effekte umgekehrt wurden, wird jetzt korrekt abgebrochen und mit dem richtigen Einblendungseffekt neu gestartet. (I62226, b/167092035)
- Ein Problem wurde behoben, bei dem der Exit
Animatoreineshide()nicht ausgeführt wurde. (Id7ffe) - Fragmente werden jetzt richtig angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
- Bei Fragmenten, bei denen der Fokus während einer Animation entfernt wird, wird nicht mehr versucht, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie
RESUMEDerreichen (I38c65, b/172925703).
Externer Beitrag
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
- Fragmente, die mit dem
<fragment>-Tag eingefügt werden, 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 abgetrennten 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 für Fragmente,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEundTRANSIT_FRAGMENT_FADE, wird jetztAnimatoranstelle vonAnimationverwendet. (b/166155034)
Neue Fehlerkorrekturen für State Manager
- Der Ansichtsfokusstatus von Fragmenten wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
- Bei Fragmenten, die nur einen Übergang mit einem gemeinsamen Element haben, werden die Spezialeffekte jetzt richtig abgeschlossen. Das bedeutet, dass sie tatsächlich in den Endzustand übergehen (Iaebc7, b/166658128).
- Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie zerstört werden. (Id5876)
- Der neue Statusmanager entfernt jetzt immer die ausgehende Fragmentansicht, bevor er die eingehende hinzufügt. (I41a6e)
- Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie die Ansicht eines eingehenden Fragments vor Beginn der Animation auf
INVISIBLEfestlegen, bleibt es also tatsächlich unsichtbar. (b/164481490) - Bei Fragmenten hat
Animatorsjetzt Priorität gegenüberAnimations. 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, wird das alte Fragment nicht wieder hinzugefügt und es wird ein leerer Bildschirm angezeigt. (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 aufgeschobener 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 Segmente werden jetzt ausgeführt und nicht nur das letzte eingehende und das erste ausgehende Segment. (b/149344150) - Verschobene Fragmente bleiben nicht mehr im Status
CREATEDhängen, sondern werden mit anderen Fragmenten in den StatusSTARTEDverschoben. (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 nicht mehr vorübergehend sichtbar, wenn Fragmente verschoben werden. (b/37140383)
FragmentManagergibt jetzt die richtigen Fragmente zurück, wennfindFragmentById()oderfindFragmentByTag()aus demonAttachFragment()-Callback aufgerufen wird. (b/153082833)- In Fragmenten wird
onCreateView()nicht mehr auf zerstörten Fragmenten aufgerufen, wenn das Fragment, das sie ersetzt, verschoben wird. (b/143915710) - Die Fehlermeldung, die beim Versuch angezeigt wird, Framework-Instanzen
Transitionund AndroidX-InstanzenTransitionzu kombinieren, enthält jetzt das Fragment mit dem ungültigen Übergang. (b/155574969)
Geändertes Verhalten
- Sie können jetzt
launch()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 einfach keine Ergebnisse mehr geliefert. (b/162255449) FragmentActivityverwendet jetzt dieOnContextAvailableListenerAPI, die in Activity1.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 der Stammansicht des Fragments, die Sie direkt nach
onViewCreated()und voronResume()festlegen, vonFragmentManagerüberschrieben, da die Sichtbarkeit der Stammansicht steuert. Als Workaround sollten Sie immer die Operationenhide()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. Wichtig ist, dass Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst werden. (b/158697631)
Geändertes Verhalten
FragmentScenarioverwendet jetztsetMaxLifecycle(), ummoveToState()zu implementieren. So 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)- Die von
ViewTreeSavedStateRegistryOwnerzurückgegebeneSavedStateRegistryOwnerist jetzt an den Lebenszyklus der Fragment-View gebunden. Dadurch wird sichergestellt, dass der Status gleichzeitig mit der Ansicht des Fragments gespeichert und wiederhergestellt wird. (b/158503763)
Fehlerkorrekturen
- Fragmente warten jetzt, bis 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) - Durch 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 ist die Delegation vononAttachFragment()an separate, testbare Listener möglich. 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 ein
DialogFragmentein anderesDialogFragmentals untergeordnetes Fragment anzeigt. (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 einemFragmenthinzugefügt. (aosp/1297993, aosp/1300264)
API-Änderungen
- Die APIs
setFragmentResult()undsetFragmentResultListener()akzeptieren jetzt jeweils einen nicht leerenBundleundFragmentResultListener. 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 eine Lambda-Funktion 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)
Updates für die 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-/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 Aufrufen vononSaveInstanceState()beendet. Das entspricht dem Verhalten des Fragmentlebenszyklus. (b/154645875) - Wenn
setMenuVisibility(false)für ein Fragment aufgerufen wird, wird die Sichtbarkeit von Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt geändert. (b/153593580) - Ein
illegalStateExceptionwurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einesDialogFragmentmitFragmentContainerViewauftrat. (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
- Es wurde ein Regressionsfehler behoben, der in Fragment
1.3.0-alpha02bei Verwendung vonBottomSheetDialogFragmenteingeführt wurde. (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 Ausgangsü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 wurde fürDialogFragment-Klassen deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht 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 in Activity
1.2.0-alpha02eingeführteActivityResultRegistryAPI wurde hinzugefügt, um die AbläufestartActivityForResult()+onActivityResult()undrequestPermissions()+onRequestPermissionsResult()zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem wurden Hooks zum Testen dieser Abläufe bereitgestellt. Ergebnis einer Aktivität abrufen wurde aktualisiert. (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()wird nicht mehr unterstützt. Code, der die Ansicht des Fragments betrifft, sollte inonViewCreated()(die unmittelbar voronActivityCreated()aufgerufen wird) und anderer Initialisierungscode inonCreate()platziert werden. Wenn Sie einen Callback erhalten möchten, sobald dieonCreate()der Aktivität abgeschlossen ist, sollte inonAttach()einLifeCycleObserverfür dieLifecycleder Aktivität registriert und entfernt werden, sobald deronCreate()-Callback empfangen wurde. (b/144309266)
Fehlerkorrekturen
- Aus 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 Kotlin-Attributnamen überschattete. (b/149891163) - Aus Fragment
1.2.3:FragmentContainerViewlöst bei Verwendung des falschen Konstruktors in der Layoutvorschau keineUnsupportedOperationExceptionmehr 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
ViewTreeLifecycleOwner.get(View)API, die in Lifecycle2.3.0-alpha01hinzugefügt wurde. Sie gibt dieviewLifecycleOwnerdes Fragments alsLifecycleOwnerfür alle vononCreateView()zurückgegebenen Ansichten zurück. (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 Löschens 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 mitViewPagereingestellt. 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 geben nicht mehr fälschlicherweise einen Fehler für lokale Variablen aus, 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, bei dem beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht nach jeder Konfigurationsänderung neu erstellt und dann 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 Aufrufen vononSaveInstanceState()beendet, was dem Verhalten des Fragmentlebenszyklus entspricht. Diese Funktion wurde bereits im Fragment1.3.0-alpha04veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)für ein Fragment aufgerufen wird, wird die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt geändert. Diese Funktion wurde bereits 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 von beibehaltenen Fragmenten zu ermöglichen. (b/151605338)
- Die
FragmentLiveDataObserve-Lint-Regel wurde fürDialogFragment-Klassen deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht 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-Property-Namen überschattet hat. (b/149891163) FragmentContainerViewlöst nicht mehrUnsupportedOperationExceptionaus, 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 eine neue Lint-Prüfung hinzugefügt, die 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 vorgeschlagen, 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 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.
Diverse Fehlerkorrekturen
- Für Fragmente, die über die Methoden
addundreplacehinzugefügt werden und eineClass-Instanz (oder die Kotlin-reifizierten Versionen) verwenden, wird der Standardkonstruktor jetzt von ProGuard beibehalten. (b/148181315) FragmentStatePagerAdapterundFragmentPagerAdapterfangen keine Ausnahmen mehr ab, die vonFragmentManagerausgelöst werden, wennfinishUpdate()ausgeführt wird. (aosp/1208711)- Ein Problem wurde behoben, bei dem
FragmentManager.findFragment()nicht mit Fragmenten funktionierte, die über das<fragment>-Tag hinzugefügt wurden. (b/147784323) - Fragmente, die mit dem Tag
<fragment>eingefügt werden, erhalten jetzt immer einen Aufruf vononInflate()voronCreate(), wenn sie sich im Layout befinden. (aosp/1215856) - Wenn
toString()für eineFragmentManager-Instanz aufgerufen wird, wird nicht mehr die AusnahmeNullPointerExceptionausgelöst, wenn die Aktivität bereits zerstört wurde. (b/148189412)
Änderungen an Abhängigkeiten
- Fragmente
1.2.1sind jetzt von Lifecycle ViewModel SavedState2.2.0abhängig.
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:
FragmentContainerViewist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente und 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, bis die Exit-Animationen, Exit-Framework-Übergänge und Exit-AndroidX-Übergänge (bei Verwendung von Transition1.3.0) abgeschlossen sind, bevoronDestroyView()aufgerufen wird.- Klassenbasiertes
add()undreplace():FragmentTransactionwurden neue Überladungen vonadd()undreplace()hinzugefügt, die einClass<? extends Fragment>und ein optionalesBundlevon Argumenten akzeptieren. Bei diesen Methoden wird IhrFragmentFactoryverwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen.fragment-ktxwurden auch Kotlin-Erweiterungen hinzugefügt, die reified-Typen verwenden (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)). - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactoryist jetzt die Standard-Fabrikmethode, 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, sie aufzurufen.- Einstellung von
FragmentManager.enableDebugLogging(): Die statische MethodeFragmentManager.enableDebugLoggingwurde eingestellt. 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.
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
classoderandroid:namein einemFragmentContainerViewverwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen 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.
Diverse Fehlerkorrekturen
- Es wurde ein Regressionsfehler im Fragment
1.2.0-rc04bei Verwendung des Tags<fragment>behoben, der dazu führte, dassonViewCreated()während der Zerstörung der Aktivität fälschlicherweise aufgerufen wurde. (b/146290333) - Fragmente, die mit dem
<fragment>-Tag hinzugefügt werden, haben jetzt ordnungsgemäß ihren nicht konfigurierten Zustand gelöscht, auch wenn sie nur manchmal im Layout sind (d.h. nur im Querformat). Folglich werden diese Fragmente jetzt korrekt inCREATEDverschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden also nicht instanziiert, ohne dass sie jemals Lebenszyklusmethoden durchlaufen. (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.
Diverse 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.
Diverse Fehlerkorrekturen
- Es wurde ein unbeabsichtigtes Verhaltensmuster behoben, bei dem entfernte Fragmente von
findFragmentById()/findFragmentByTag()zurückgegeben wurden, während ihre Übergänge/Animationen beim Beenden ausgeführt wurden. (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, durch das Ansichten nach dem Einblenden eines ausgeblendeten Fragments fälschlicherweise mit
INVISIBLEgekennzeichnet wurden. (b/70793925) - Übergänge für freigegebene Elemente in Fragmenten unterstützen jetzt Ansichten, die gedreht, skaliert usw. wurden (b/142835261).
Updates für die 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.
Diverse 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 Tags<fragment>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)
Diverse Fehlerkorrekturen
- Die
onDismiss- undonCancel-Callbacks fürDialogFragmentgarantieren jetzt, dassDialogInterface, das an sie übergeben wird, nicht null ist und dassgetDialog()nicht null zurückgibt, wenn sie ausgeführt werden. (b/141974033) - Mit
FragmentContainerViewwird das durchclassoderandroid:namedefinierte Fragment als Teil der Inflation hinzugefügt. So könnenfindFragmentById()undfindFragmentByTag()direkt danach verwendet werden. (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 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.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
onInflate()des 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
- Mit
FragmentContainerViewwird die Unterstützung für das Hinzufügen eines ersten Fragments mit zusätzlicher Unterstützung für die XML-Attributeandroid:nameund optionalandroid:taghinzugefügt. Im Gegensatz zum<fragment>-Tag wird beiFragmentContainerViewein normalesFragmentTransactionverwendet, um das erste Fragment hinzuzufügen. Dies ermöglicht weitereFragmentTransaction-Vorgänge für dasFragmentContainerViewund die Verwendung von View Binding für das Layout. (b/139830628, b/141177981) - „Fragments“ enthält jetzt eine Lint-Warnung, die eine schnelle Korrektur anbietet, um
<fragment>durchFragmentContainerViewzu ersetzen. (b/139830056)
Diverse Fehlerkorrekturen
- Ein
ClassCastExceptionbei Verwendung vonandroidx.transitionwurde behoben. (b/140680619) - Bei Verwendung von Transition
1.3.0-beta01warten Fragmente jetzt aufandroidx.transition-Übergänge (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 für denselben Container gestartet werden. (aosp/1119841) - Ein Problem auf API 17 und niedriger wurde behoben, das beim Verwenden von
androidx.transition-Übergängen für die Stammansicht Ihres 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 aktuellen Espresso-Version 3.2.0 behoben. (b/139100149) - Die Verwendung von
Log.win FragmentManager wurde entfernt. (aosp/1126468)
Bekannte Probleme
- Das Fragment
onInflate()erhält 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 das Nicht-Null-FragmentManagerzurückgibt, dem das Fragment hinzugefügt wird. MitisAdded()können Sie feststellen, ob es sicher ist, die Methode aufzurufen. (b/140574496) - Die statische Methode
FragmentManager.enableDebugLoggingist veraltet. 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)
Diverse Fehlerkorrekturen
- Fragmente werden jetzt richtig zerstört, während die Übergangsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
- Ein Problem wurde 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
FragmentContainerViewist jetztfinal. (b/140133091)
Diverse 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 Übergänge (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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactoryist jetzt die Standardfactory, die verwendet wird, wennby viewModels(),by activityViewModels(), derViewModelProvider-Konstruktor oderViewModelProviders.of()mit einemFragmentverwendet wird. (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 Fenstereinsätzen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)- Es wurde eine statische
FragmentManager.findFragment(View)-Methode hinzugefügt, um das enthaltende Fragment aus einer Ansicht abzurufen, 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 ein optionalesBundlevon 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-Lebenszyklus-Callbacks hinzugefügt. (b/127272564)- Die APIs für den Breadcrumb-Titel auf
FragmentTransactionundFragmentManager.BackStackEntrywurden eingestellt. (b/138252944) - Die Methode
setTransitionStyleaufFragmentTransactionist veraltet. (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.
Diverse 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: Es wurde ein Problem behoben, bei dem durch mehrmaliges Aufrufen vonpostponeEnterTransition()mit einem Zeitlimit vorherige Zeitlimits nicht abgebrochen wurden. (b/137797118) - Aus Fragment
1.1.0-rc02: Ein Absturz inFragmentPagerAdapterundFragmentStatePagerAdapterbeim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Fragmente warten jetzt, bis Animationen abgeschlossen sind, bevor
onDestroyView()gesendet wird. (b/136110528) - Fragment-Animationen von untergeordneten Fragmenten und ihren Nachfolgern werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
- Es wurde ein
NullPointerExceptionbehoben, der beim Verwenden von Übergängen für gemeinsame Elemente und beim Kombinieren von Pop- und Add-Vorgängen auftrat. (b/120507394) - Es wurde ein Workaround 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)
Diverse Fehlerkorrekturen
- Ein
NullPointerExceptionbeim Entfernen einesFragmentTransaction, dassetPrimaryNavigationFragment()vorreplace()verwendet hat, wurde behoben. (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 bietet eineFragmentScenario-Klasse zum isolierten Testen eines Fragments. 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 Artefakt
fragment-ktxenthä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. Dies 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 Inhaltsansicht festgelegt werden soll. Das ist eine Alternative zum Aufrufen vonsetContentView()inonCreate(). Die Anforderung, dass Ihre abgeleitete Klasse einen Konstruktor ohne Argumente haben muss, ändert sich dadurch nicht. - Fragment-LayoutId-Konstruktor: Unterklassen von
Fragmentkönnen jetzt optional einen Konstruktor fürFragmentaufrufen, der eineR.layout-ID akzeptiert. Damit wird das Layout angegeben, 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 Überladung von
postponeEnterTransition()hinzugefügt, die eine Zeitüberschreitung berücksichtigt.
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 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- In Fragmenten werden jetzt verschobene Übergänge korrekt abgebrochen, wenn die Fragmente aus dem Backstack entfernt wurden. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 und androidx.fragment:fragment-testing:1.1.0-rc03 sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Aufrufen von
postponeEnterTransition()mit einem Zeitlimit mehrmals vorherige Zeitlimits nicht abgebrochen hat. (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.
Diverse 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.
Diverse Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt richtig aktualisiert, wenn während der Übergangslaufzeit
show()- oderhide()-Vorgänge verwendet werden. (b/133385058) - Es wurde ein
NullPointerExceptionbehoben, der beim Einblenden einesFragmentTransactionauftrat, bei demsetPrimaryNavigationFragment()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.
Diverse 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 bei Verwendung von
animateLayoutChanges="true"ignoriert. 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
Diverse 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 einBundleverwendet hat, 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
Diverse Fehlerkorrekturen
- Fragmente, deren Lebenszyklus über
setMaxLifecycle()begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Zustand erreichen. b/131557151 - Wenn Sie
setMaxLifecycle(Lifecycle.State.CREATED)verwenden, wird die View 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. Dies 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).
Diverse 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 in Fragmenten wird
LAYER_TYPE_HARDWAREnicht mehr erzwungen. Wenn Sie eine Hardwareebenenanimation benötigen, legen Sie sie als Teil Ihrer Animation fest. (b/129486478)
Version 1.1.0-alpha06
3. April 2019
androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 und androidx.fragment:fragment-testing:1.1.0-alpha06 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. Dieser Ansatz 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)
Diverse Fehlerkorrekturen
- Ein Regressionsproblem in Version 1.1.0-alpha05 wurde behoben, das dazu führte, dass das eingehende Fragment auf dem Bildschirm flackerte. (b/129405432)
- Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von Vorgängen vom Typ „popBackStack+replace+popBackStack“ 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. Hier finden Sie die vollständige Liste der Commits, die in dieser Version enthalten sind.
Neue Funktionen
@ContentView-Vermerke werden jetzt im Cache gespeichert (b/123709449).
Verhaltensänderungen
- 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).
Diverse Fehlerkorrekturen
onNewIntentfürFragmentActivityist jetzt korrekt mit@CallSupergekennzeichnet (b/124120586)- Ein Problem wurde behoben, bei dem
onDismiss()vonDialogFragmentzweimal aufgerufen werden konnte, wenngetDialog().dismiss()odergetDialog().cancel()verwendet wurde (b/126563750).
Version 1.1.0-alpha04
07. 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 Klassenanmerkung
@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 festgelegt werden. Wenn Sie diese Methode derzeit überschreiben, reichen Sie bitte einen Feature Request ein. (aosp/880714) - Es wurde ein Hinweis hinzugefügt, dass
getViewModelStore()nicht überschrieben werden sollte. In einer zukünftigen Version wird endgültig festgelegt. Wenn Sie diese Methode derzeit überschreiben, reichen Sie bitte einen Feature Request ein. (aosp/880713) - Ein Problem mit der binären Kompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)
Diverse Fehlerkorrekturen
- Ziel-Fragmente werden korrekt gelöscht, wenn Sie
nullansetTargetFragment()übergeben. (aosp/849969) - Ein Problem wurde behoben, durch das Ziel-Fragments manchmal in oder nach
onDestroy()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 der enthaltenden Aktivität zugeordnet sind [b/119050253]. - Die
by viewModels-Kotlin-Eigenschaftsdelegierung 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 Thema 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, die eine@NonNull Fragmentzurückgibt oder eineIllegalStateExceptionauslöst. [b/112103783]
Diverse Fehlerkorrekturen
- Fixed IllegalStateException: Failure saving state 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 Fragment-Erstellung verwenden, anstatt eine
FragmentFactory-Instanz zu übergeben. (aosp/812913)
Diverse Fehlerkorrekturen
- Es wurde eine IllegalStateException behoben, die bei der Verwendung verschachtelter Fragmente im Backstack auftrat (b/119256498).
- Das Problem mit Abstürzen bei Verwendung von
FragmentScenario.recreate()mit einemFragmentFactorywurde behoben (aosp/820540). - Ein Problem wurde behoben, durch das auf Zielfragmente nicht zugegriffen werden konnte, nachdem das Fragment entfernt wurde (aosp/807634).
Version 1.1.0-alpha01
5. November 2018
Dies ist die erste Version des fragment-testing-Artefakts und FragmentScenario, das auf den androidx.test:core-APIs basiert. Weitere Informationen finden Sie in der Dokumentation zum Testen von Fragmenten.
Neue Funktionen
- Neue FragmentScenario-Klasse zum isolierten Testen von Fragmenten.
- Sie können jetzt eine
FragmentFactoryfür jedesFragmentManagerfestlegen, um zu steuern, wie neue Fragment-Instanzen 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 Null-Zulässigkeits-Annotationen wurden für die gesamte Fragment API-Oberfläche deutlich erweitert.
Diverse Fehlerkorrekturen
- Ein Problem wurde behoben, das dazu führte, dass Fragment-Vorgä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-beta01anstelle des korrektenandroidx.test:core:1.0.0.