Fragment
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
13. August 2025 | 1.8.9 | - | – | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Fragment hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Cool
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 1.8
Version 1.8.9
13. August 2025
androidx.fragment:fragment-*:1.8.9
wird veröffentlicht. Version 1.8.9 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Abbrechen einer Vorhersage-Geste für die Zurück-Funktion, die einen Vorgang zum Ausblenden auslöst, dazu führte, dass die nachfolgende Geste bei Verwendung von Animators nicht richtig animiert wurde. (I0a400, b/384765586)
- Es wurde ein Fehler behoben, bei dem das oberste Fragment bei einer Kombination aus
setMaxLifecycle
undpopBackStack
nicht in den Status RESUMED verschoben werden konnte. (I3448b, b/406127576)
Version 1.8.8
4. Juni 2025
androidx.fragment:fragment-*:1.8.8
wird veröffentlicht. Version 1.8.8 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
FragmentManager
beim Speichern des Status von Fragmenten, die mitsetMaxLifecycle(Lifecycle.State.INITIALIZED)
hinzugefügt wurden, abgestürzt ist. Da diese Fragmente nieonCreate()
durchlaufen haben, ist kein Status mehr gespeichert undonSaveInstanceState()
wird nicht aufgerufen. (I6e37a)
Version 1.8.7
20. Mai 2025
androidx.fragment:fragment-*:1.8.7
wird veröffentlicht. Version 1.8.7 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
FragmentManager
nach Pop- und Ersetzungsvorgängen im selben Frame nicht im richtigen Status war. Dies konnte in Verbindung mit dem Entfernen des Backstacks überpopBackStack
oder die vorhersagende Zurück-Geste zu einem Absturz führen. (I50ad1) - Ein Absturz wurde behoben, der durch die Verwendung von AndroidX Transitions verursacht wurde. Dabei wurde versucht, eine nicht gestartete Transition durch schnelle, aufeinanderfolgende Fragmenttransaktionen abzubrechen. Die AndroidX Transition-Bibliothek hat den Übergangsstatus jedoch nicht richtig gelöscht. Weitere Informationen finden Sie unter b/414612221. (Ib5235)
Version 1.8.6
12. Februar 2025
androidx.fragment:fragment-*:1.8.6
wird veröffentlicht. Version 1.8.6 enthält diese Commits.
Fehlerkorrekturen
- Die
FragmentContainerView
-Überschreibung vonsetOnApplyWindowInsetsListener
akzeptiert jetzt einen Null-Listener, was dem entspricht, was das Framework zulässt. (I575f0, b/282790626)
Version 1.8.5
30. Oktober 2024
androidx.fragment:fragment-*:1.8.5
wird veröffentlicht. Version 1.8.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
IllegalStateException
durchsaveBackStack
nur ausgelöst wurde, nachdem eine Vorhersage für die Zurück-Geste abgebrochen oder unterbrochen wurde. (I3387d, b/342419080)
Version 1.8.4
2. Oktober 2024
androidx.fragment:fragment-*:1.8.4
wird veröffentlicht. Version 1.8.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das schnelle Drücken der System-Zurück-Schaltfläche oder das schnelle Ausführen der Zurück-Geste zum Absturz von Fragmenten führte, wenn AndroidX Transitions verwendet wurde. (Ibc038, b/364804225)
- Ein Problem in Fragmenten wurde behoben, bei dem das Unterbrechen einer vorhersagenden Zurück-Geste den Fragmentmanager in einen undefinierten Zustand versetzte und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
- Es wurde ein
UninitializedPropertyAccessException
inAndroidFragment
behoben, der beim dynamischen Ersetzen der Klasse auftrat, die von derAndroidFragment
-Instanz verwendet wird. (I12dea)
Version 1.8.3
4. September 2024
androidx.fragment:fragment-*:1.8.3
wird veröffentlicht. Version 1.8.3 enthält diese Commits.
Fehlerkorrekturen
FragmentManager
berü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 einemIndexOutOfBoundsException
führt. (I9ba32, b/342316801)AndroidFragment
stürzt nicht mehr ab, wenn es einer Komposition hinzugefügt wird, während der Status der enthaltenden Aktivität/des enthaltenden Fragments bereits gespeichert ist. (I985e9, b/356643968)
Version 1.8.2
24. Juli 2024
androidx.fragment:fragment-*:1.8.2
wird veröffentlicht. Version 1.8.2 enthält diese Commits.
Fehlerkorrekturen
AndroidFragment
verarbeitet jetzt Fälle richtig, in denen das übergeordnete Fragment in den Fragment-Backstack eingefügt wird. So werden Probleme vom Typ „No view found for id“ vermieden, wenn zum Fragment zurückgekehrt wird. (I94608)- Fragmente, die über die
FragmentTransaction.add
-Methode mit einemViewGroup
hinzugefügt werden, warten jetzt aufonContainerAvailable
, bevor sie mitonStart()
fortfahren. Das betrifft Nutzer dieser API, z. B.AndroidFragment
. Diese Funktion wartet jetzt darauf, dassAndroidFragment
wieder in die Komposition eintritt, bevor sie durchonStart()
verschoben wird. (I94608)
Version 1.8.1
26. Juni 2024
androidx.fragment:fragment-*:1.8.1
wird veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Fragmente ohne Container beim Starten einer vorhersagenden Zurück-Geste sofort
DESTROYED
wurden. Sie werden jetzt im StatusCREATED
gehalten, bis die Geste abgeschlossen ist. (If6b83, b/345244539)
Version 1.8.0
12. Juni 2024
androidx.fragment:fragment-*:1.8.0
wird veröffentlicht. Version 1.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.7.0
- Das
fragment-compose
-Artefakt enthält jetzt einAndroidFragment
Composable
, mit dem Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden können. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese Methode sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mitAndroidViewBinding
aufgebläht wurde. - Der
onBackStackChangeCancelled
-Callback auf derOnBackStackChangedListener
-Schnittstelle vonFragmentManager
wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManager
ausgelöst. Dadurch wird er zeitlich an denonBackStackChangeCommitted
-Callback angeglichen.
Version 1.8.0-rc01
29. Mai 2024
androidx.fragment:fragment-*:1.8.0-rc01
wird veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der
onBackStackChangeCancelled
-Callback auf derFragmentManagers OnBackStackChangedListener
-Schnittstelle wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManager
ausgelöst. Dadurch wird das Timing desonBackStackChangeCommitted
-Callbacks angeglichen. (I5ebfb, b/332916112)
Version 1.8.0-beta01
14. Mai 2024
androidx.fragment:fragment-*:1.8.0-beta01
wird veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ab Fragment
1.7.1
: Die Vorhersage für die Rückwärtsbewegung wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein schwarzer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02
wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.7.0-rc02
: Es wurden Logs hinzugefügt, um anzugeben, warum das Festlegen einessharedElement
ohne andere Übergänge nicht ausgeführt wird. (Iec48e) - Fragment
1.7.0-rc02
: Ein Fehler wurde behoben, bei dem es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.8.0-alpha01
3. April 2024
androidx.fragment:fragment-*:1.8.0-alpha01
wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit dem neuen
AndroidFragment
Composable
können Fragmente über den Fragmentklassennamen in die Compose-Hierarchie eingefügt werden. Das Speichern und Wiederherstellen des Status des Fragments wird automatisch übernommen. Diese kann als direkter Ersatz für AndroidViewBindingComposable
verwendet werden.(b/312895363, Icf841)
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener
-APIs wurde aktualisiert und enthält nun Informationen dazu, wann sie aufgerufen werden und wie sie verwendet werden sollten. (I0bfd9)
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7
Version 1.7.1
14. Mai 2024
androidx.fragment:fragment-*:1.7.1
wird veröffentlicht. Version 1.7.1 enthält diese Commits.
Fehlerkorrekturen
- Die Vorhersage für das Zurückgehen wird jetzt nur noch für Transaktionen ausgeführt, in denen alle Fragmente entweder einen Animator oder eine suchbare AndroidX-Transition haben. Damit wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein leerer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.7.0
1. Mai 2024
androidx.fragment:fragment-*:1.7.0
wird veröffentlicht. Version 1.7.0 enthält diese Commits.
Unterstützung für die vorhersagende Zurück-Geste
- Fragmente unterstützen jetzt die Vorhersagefunktion für die Rückwärtsnavigation in der App, wenn
Animator
oder AndroidX Transition 1.5.0 verwendet wird. So können Nutzer mit der Zurück-Geste das vorherige Fragment aufrufen, indem sie den Animator/die Transition durchsuchen, bevor sie entscheiden, ob sie die Transaktion durch Abschluss der Geste oder durch Abbrechen bestätigen möchten.
Übergangssystem | XML-Ressource | Unterstützt die intelligente „Zurück“-Geste |
---|---|---|
Animation |
R.anim |
Nein |
Animator |
R.animator |
Ja |
Framework Transition |
R.transition |
Nein |
AndroidX Transition mit Transition 1.4.1 oder niedriger |
R.transition |
Nein |
AndroidX Transition mit Transition 1.5.0 |
R.transition |
Ja |
Wenn nach der Aktivierung der Vorhersage-Geste Probleme mit der Unterstützung der Vorhersage-Geste in Fragmenten auftreten, reichen Sie bitte ein Problem für Fragment ein und fügen Sie ein Beispielprojekt bei, in dem das Problem reproduziert wird. Sie können die Vorhersage für die Zurück-Geste mit FragmentManager.enabledPredictiveBack(false)
im onCreate()
Ihrer Aktivität deaktivieren.
FragmentManager.OnBackStackChangedListener()
bietet jetzt die onBackStackChangeProgressed()
und onBackStackChangeCancelled()
zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose
-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.
Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content
-Erweiterungsmethode für Fragment
, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein ComposeView
für Sie erstellt und die richtige ViewCompositionStrategy
festgelegt.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Version 1.7.0-rc02
17. April 2024
androidx.fragment:fragment-*:1.7.0-rc02
wird veröffentlicht. Version 1.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Logs hinzugefügt, die angeben, warum das Festlegen von
sharedElement
ohne andere Übergänge fehlschlägt. (Iec48e) - Es wurde ein Fehler behoben, durch den es zu einem Absturz kam, wenn einem Vorgang, bei dem alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurde. Die Transaktion wird jetzt korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.7.0-rc01
3. April 2024
androidx.fragment:fragment-*:1.7.0-rc01
wird veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7.0-beta01
20. März 2024
androidx.fragment:fragment-*:1.7.0-beta01
wird veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallback
wird jetzt in Kotlin geschrieben, damit die Nullable-Eigenschaft des generischen Typs des Hosts mit der Nullable-Eigenschaft des Rückgabetyps vononGetHost()
übereinstimmt. (I40af5)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem ein Fragment, das sich nicht in einem Container befindet, nie zerstört wurde, wenn ein Predictive Back-Vorgang für dieses Fragment ausgeführt wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand versetzt. (Ida0d9)
- Es wurde ein Problem in Fragmenten behoben, bei dem durch Unterbrechen eingehender Übergänge mit einer vorhersagenden Zurück-Geste die eingehende Ansicht zerstört und ein leerer Bildschirm angezeigt wurde. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7. Februar 2024
androidx.fragment:fragment-*:1.7.0-alpha10
wird veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben. Wenn die Predictive Back-Unterstützung von Fragment für
Animator
oder AndroidX Transition verwendet wurde, haben Fragments eineNullPointerException
vonhandleOnBackProgressed
ausgegeben, wenn noch nie einFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. (I7c835)
Version 1.7.0-alpha09
24. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha09
wird veröffentlicht. Version 1.7.0-alpha09 enthält diese Commits.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose
-Artefakt erstellt, das Apps unterstützt, die von einer Fragment-basierten Architektur zu einer vollständig auf Compose basierenden Architektur migriert werden.
Die erste Funktion, die in diesem neuen Artefakt verfügbar ist, ist eine content
-Erweiterungsmethode für Fragment
, die die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird ein ComposeView
für Sie erstellt und die richtige ViewCompositionStrategy
festgelegt. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Neue Funktionen
FragmentManager.OnBackStackChangedListener()
bietet jetzt dieonBackStackChangeProgressed()
undonBackStackChangeCancelled()
zum Empfangen von Vorhersage-Back-Progress- und abgebrochenen Ereignissen. (214b87)
Bekanntes Problem
- Wenn Sie die Unterstützung für die vorhersagende Zurück-Geste von Fragment für
Animator
oder AndroidX Transition verwenden, lösen Fragmente eineNullPointerException
vonhandleOnBackProgressed
aus, wenn noch nie einFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. Wenn Sie einen Listener manuell hinzufügen, wird der Absturz umgangen. Eine Korrektur für dieses Problem wird in der nächsten Version von Fragments verfügbar sein.
Version 1.7.0-alpha08
10. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha08
wird veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Aufräumen
- Der Workaround für die Übergangsbibliothek, der in Transition
1.5.0-alpha06
behoben wurde, wurde entfernt. (I04356)
Version 1.7.0-alpha07
29. November 2023
androidx.fragment:fragment-*:1.7.0-alpha07
wird veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
NullPointerException
behoben, der durch das Festlegen einer Übergangsanimation für ein gemeinsames Element und das gleichzeitige Versäumnis, auch einen enter/exitTransition festzulegen, verursacht wurde. (I8472b) - Über Fragment
1.6.2
: Wenn das Fragment einesFragmentContainerView
aufgebläht wird, sind seine Status wieFragmentManager
, Host und ID jetzt imonInflate
-Callback verfügbar. (I1e44c, b/307427423) - Fragment
1.6.2
: Wenn SieclearBackStack
verwenden, um eine Gruppe von Fragmenten zu entfernen, wird dasViewModel
aller verschachtelten Fragmente jetzt gelöscht, wenn dasViewModels
des übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)
Version 1.7.0-alpha06
4. Oktober 2023
androidx.fragment:fragment-*:1.7.0-alpha06
wird veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Abhängigkeitsupdate
- „Fragments“ wurde aktualisiert, um von der neuen
animateToStart
API abzuhängen, die in Transition1.5.0-alpha04
hinzugefügt wurde.
Version 1.7.0-alpha05
20. September 2023
androidx.fragment:fragment-*:1.7.0-alpha05
wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragmente unterstützen jetzt die intelligente „Zurück“-Geste, wenn AndroidX-Übergänge verwendet werden. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Transition wechseln, bevor Sie die Transaktion über die „Fertig“-Geste bestätigen oder abbrechen. Sie müssen die Transition
1.5.0-alpha03
-Version verwenden, um diese Funktion zu aktivieren. (Ib49b4, b/285175724)
Bekannte Probleme
- Derzeit gibt es ein Problem, bei dem nach dem Abbrechen einer Zurück-Geste mit einem Übergang beim nächsten Starten der Zurück-Geste der Übergang nicht ausgeführt wird und ein leerer Bildschirm angezeigt wird. Das kann an einem Problem in der Transition-Bibliothek liegen. (b/300157785). Wenn dieses Problem auftritt, melden Sie es bitte für Fragment und fügen Sie ein Beispielprojekt bei, mit dem sich das Problem reproduzieren lässt. Sie können die Vorhersage für die Zurück-Geste mit
FragmentManager.enabledPredictiveBack(false)
imonCreate()
Ihrer Aktivität deaktivieren.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04
wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Fragmente beim Abbrechen einer vorhersagenden Zurück-Geste nicht den richtigen Lebenszyklusstatus erreicht haben. (I7cffe, b/297379023)
- Es wurde ein Regressionsfehler behoben, durch den Animationen mit Übergängen ausgeführt werden konnten. (I59f36)
- Ein Problem wurde behoben, das beim Verwenden von „Vorhersagende Zurück-Geste“ mit Fragmenten auftrat. Wenn versucht wurde, zweimal kurz hintereinander zum vorletzten Fragment im Backstack zurückzukehren, stürzte die App ab. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03
wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der intelligenten „Zurück“-Geste dazu führte, dass das erste Fragment im Backstack des Fragmentmanagers übersprungen und die Aktivität beendet wurde, wenn die System-„Zurück“-Geste über die 3‑Schaltflächen-Navigation oder die intelligente „Zurück“-Geste verwendet wurde. (I0664b, b/295231788)
Version 1.7.0-alpha02
9. August 2023
androidx.fragment:fragment-*:1.7.0-alpha02
wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie ab API 34 Fragmente mit vorhersagbaren Zurück-Gesten verwenden und ein Übergangssystem nutzen, das keine Suche unterstützt (
Animations
,Transitions
), oder gar keine Übergänge, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Zurück-Aktion ausgeführt wird. (I8100c)
Version 1.7.0-alpha01
7. Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01
wird veröffentlicht. Diese Version wird in einem internen Branch entwickelt.
Neue Funktionen
- Bei Verwendung von
Animator
wird jetzt die intelligente „Zurück“-Geste in Fragmenten unterstützt. So können Sie mit der Zurück-Geste das vorherige Fragment mit Ihrem benutzerdefinierten Animator aufrufen, bevor Sie die Transaktion mit der Geste „Abgeschlossen“ bestätigen oder abbrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie die experimentelleenablePredictiveBack()
verwenden undfalse
übergeben.
Version 1.6
Version 1.6.2
1. November 2023
androidx.fragment:fragment-*:1.6.2
wird veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment eines
FragmentContainerView
instanziiert wird, sind seine Status wieFragmentManager
, Host und ID jetzt imonInflate
-Callback verfügbar. (I1e44c, b/307427423) - Wenn Sie
clearBackStack
verwenden, um eine Gruppe von Fragmenten zu entfernen, wird dasViewModel
aller verschachtelten Fragmente jetzt gelöscht, wenn dasViewModels
des übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)
Version 1.6.1
26. Juli 2023
androidx.fragment:fragment-*:1.6.1
wird veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der gespeicherte Status, der gespeichert wurde, als die Aktivität beendet, aber nicht zerstört wurde, fälschlicherweise im Cache gespeichert wurde, auch nachdem die Fragmentinstanz wieder in den Status
RESUMED
verschoben 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
ComponentDialog
nicht ohne eine explizite Abhängigkeit von Activity erweitern konnten. (b/287509323)
Version 1.6.0
7. Juni 2023
androidx.fragment:fragment-*:1.6.0
wird veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Der gespeicherte Status von
Fragment
s wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt. Der Status wird jetzt immer in einemBundle
gespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt. - Die
FragmentManager.OnBackStackChangedListener
-Schnittstelle wurde um zwei zusätzliche CallbacksonBackStackChangeStarted
undonBackStackChangeCommitted
erweitert, die mit jedemFragment
aufgerufen werden, kurz bevor sie dem Fragment-Backstack hinzugefügt bzw. daraus entfernt werden, und kurz nachdem die Transaktion übernommen wurde. FragmentStrictMode
hat ein neuesWrongNestedHierarchyViolation
hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht demchildFragmentManager
des übergeordneten Elements hinzugefügt wurde.- Die APIs
Fragment
undFragmentManager
, dieIntent
oderIntentSender
verwenden, sind jetzt korrekt mit@NonNull
annotiert, 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. DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendeComponentDialog
.- Das Fragment hängt jetzt von Lifecycle
2.6.1
ab. - Das Fragment ist jetzt von SavedState
1.2.1
abhängig. - Das Fragment hängt jetzt von ProfileInstaller
1.3.0
ab. Das
fragment-testing-manifest
-Artefakt trennt die Manifesteinträge von den anderen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen
fragment-testing
undandroidx.test
vermieden.
Version 1.6.0-rc01
10. Mai 2023
androidx.fragment:fragment-*:1.6.0-rc01
wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
ActivityResult
mit dem falschen Anforderungscode gesendet wurden, wenn mehrerestartActivityForResult
-Anforderungen nacheinander gestellt wurden. (If0b9d, b/249519359) - Ein Problem wurde behoben, bei dem die
onBackStackChangeListener
-Callbacks für Transaktionen gesendet wurden, die den Backstack nicht geändert haben, wenn sie mit Transaktionen kombiniert wurden, die den Backstack geändert haben. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19. April 2023
androidx.fragment:fragment-*:1.6.0-beta01
wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransition
mit einem Zeitlimit verwenden und das zurückgestellte Fragment dann ersetzen, wird es nicht mehr geleakt. (I2ec7d, b/276375110) - Die neuen
onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks senden jetzt nur noch einmal ein Fragment, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)
Version 1.6.0-alpha09
5. April 2023
androidx.fragment:fragment-*:1.6.0-alpha09
wird veröffentlicht. Version 1.6.0-alpha09 enthält diese Commits.
API-Änderungen
DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendeComponentDialog
. (I022e3, b/234274777)- Die APIs für die Fragmente
commitNow()
,executePendingTransactions()
undpopBackStackImmediate()
wurden mit@MainThread
annotiert. Das bedeutet, dass sie jetzt alle Build-Fehler auslösen, wenn sie nicht über den Hauptthread aufgerufen werden, anstatt erst zur Laufzeit zu fehlschlagen. (Ic9665, b/236538905)
Fehlerkorrekturen
- Es wurde ein Fehler in
FragmentManager
behoben, durch den das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668) - Die Callbacks
OnBackStackChangedListener
onBackStackChangeStarted
undonBackStackChangeCommitted
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
wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Der Zeitpunkt des
OnBackStackChangedListener.onBackStackChangeCommited
-Callbacks wurde angepasst, sodass er vor der Ausführung von Fragmentvorgängen ausgeführt wird. So wird sichergestellt, dass dem Callback niemals ein Fragment übergeben wird, das getrennt ist. (I66a76, b/273568280)
Fehlerkorrekturen
- Fragment
1.5.6
: Ein Problem wurde behoben, bei dem der Aufruf vonclearFragmentResultListener
innerhalb einessetFragmentResultListener
nicht funktionierte, wennLifecycle
bereitsSTARTED
war und ein Ergebnis bereits verfügbar war. (If7458)
Abhängigkeitsupdates
- Das Fragment hängt jetzt von Lifecycle
2.6.1
ab. (586fe7) - Das Fragment ist jetzt von SavedState
1.2.1
abhängig. (078e4e) - Das Fragment hängt jetzt von ProfileInstaller
1.3.0
ab. (3fc05b)
Version 1.6.0-alpha07
8. März 2023
androidx.fragment:fragment-*:1.6.0-alpha07
wird veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.5.6
: Es wurde ein Problem behoben, bei dem das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüelemente hinzugefügt hatte. (50f098, b/244336571)
Version 1.6.0-alpha06
22. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha06
wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Verhaltensänderung
- Der neue
onBackStackChangedStarted
-Callback inFragmentManager
vononBackStackChangedListener
wird jetzt ausgeführt, bevor Fragmente in ihre Zielstatus übergehen. (I34726)
Version 1.6.0-alpha05
8. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha05
wird veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener
-Schnittstelle bietet jetzt zwei zusätzliche Rückrufe,onBackStackChangeStarted
undonBackStackChangeCommitted
, die zusätzliche Informationen und Steuerungsmöglichkeiten bieten, wenn sich der Backstack in derFragmentManager
ändert. (Ib7ce5, b/238686802)
API-Änderungen
- Die APIs
Fragment
undFragmentManager
, dieIntent
oderIntentSender
verwenden, sind jetzt korrekt mit@NonNull
annotiert, um zu verhindern, dass ein Nullwert übergeben wird. Ein Nullwert würde immer sofort die entsprechenden Android-Framework-APIs zum Absturz bringen, die von diesen Methoden aufgerufen werden. (I06fd4)
Version 1.6.0-alpha04
7. Dezember 2022
androidx.fragment:fragment-*:1.6.0-alpha04
wird veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
hat ein neuesWrongNestedHierarchyViolation
hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der View-Hierarchie des übergeordneten Elements verschachtelt ist, aber nicht demchildFragmentManager
des übergeordneten Elements hinzugefügt wurde. (I72521, b/249299268)
Geändertes Verhalten
- Fragmente stellen jetzt ihren
SavedStateRegistry
-Zustand voronAttach()
wieder her. So ist er in allen Methoden des Aufwärtslebenszyklus verfügbar. (I1e2b1)
API-Änderungen
- Das
fragment-testing-manifest
-Artefakt trennt die Manifesteinträge von den anderen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing
und androidx.test
vermieden.(I8e534, b/128612536)
Fehlerkorrekturen
- Fragment
1.5.5
: Der StatusViewModel
wird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (I10d2b, b/253546214)
Version 1.6.0-alpha03
5. Oktober 2022
androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
und androidx.fragment:fragment-testing:1.6.0-alpha03
sind veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Klassen, die
DialogFragment
erweitern, müssen jetzt „super“ in ihrenonDismiss()
-Überschreibungen aufrufen. (I14798, b/238928865)
Fehlerkorrekturen
- Es wurden Regressionen behoben, die durch die Integration der neuen Provider-Callback-Schnittstellen (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) verursacht wurden, damit Fragmente immer die richtigen Callbacks erhalten. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)
Version 1.6.0-alpha02
24. August 2022
androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
und androidx.fragment:fragment-testing:1.6.0-alpha02
sind veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.5.2
: Es wurde ein Problem behoben, bei dem die gleichzeitige Ausführung einerpopBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass für das Beenden von Fragmenten die falscheAnimation
-/Animator
-Methode ausgeführt wurde. (Ib1c07, b/214835303)
Version 1.6.0-alpha01
27. Juli 2022
androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
und androidx.fragment:fragment-testing:1.6.0-alpha01
sind veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Geändertes Verhalten
- Der gespeicherte Status von
Fragment
s wurde vollständig zwischen dem Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und dem vom Entwickler bereitgestellten Status aufgeteilt. Der Status wird jetzt immer in einemBundle
gespeichert, mit dem genau bestimmt werden kann, woher der Status eines Fragments stammt. (b/207158202)
Fehlerkorrekturen
- Fragment
1.5.1
: Es wurde ein Regressionsfehler inDialogFragmentCallbacksDetector
behoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Abhängigkeitsupdate
- Ab Fragment
1.5.1
: Die Fragment-Bibliothek hängt jetzt von Lifecycle2.5.1
ab. (Id204c) - Ab Fragment
1.5.1
: Die Fragment-Bibliothek hängt jetzt von Activity1.5.1
ab. (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
postponeEnterTransition
mit 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
clearFragmentResultListener
innerhalb einessetFragmentResultListener
nicht funktionierte, wenn dasLifecycle
bereitsSTARTED
war und ein Ergebnis bereits verfügbar war. (If7458)
Version 1.5.5
7. Dezember 2022
androidx.fragment:fragment:1.5.5
, androidx.fragment:fragment-ktx:1.5.5
und androidx.fragment:fragment-testing:1.5.5
sind veröffentlicht. Version 1.5.5 enthält diese Commits.
Fehlerkorrekturen
- Der Status
ViewModel
wird nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung für Fragmente gespeichert. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
und androidx.fragment:fragment-testing:1.5.4
sind veröffentlicht. Version 1.5.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem die Weiterleitung an untergeordnete Fragmente fehlschlug, wenn eine benutzerdefinierte
FragmentController
mit einem Host verwendet wurde, der keine Provider-Callback-Schnittstelle (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) implementiert, und die eingestellte Dispatch-Funktion aufgerufen wurde. (I9b380)
Version 1.5.3
21. September 2022
androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
und androidx.fragment:fragment-testing:1.5.3
sind veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Backstack die Callbacks
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
undonConfigurationChanged()
erhielten. (I34581, I8dfe6, b/242570955) - Verschachtelte untergeordnete Fragmente erhalten nicht mehr mehrere
onMultiWindowModeChanged()
-,onPictureInPictureModeChanged()
-,onLowMemory()
- oderonConfigurationChanged()
-Callbacks. (I690b3, Id0096, If9d6b, I2cba2)
Version 1.5.2
10. August 2022
androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
und androidx.fragment:fragment-testing:1.5.2
sind veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die gleichzeitige Ausführung einer
popBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass für das Beenden von Fragmenten die falscheAnimation
/Animator
ausgeführt wurde. (Ib1c07, b/214835303)
Version 1.5.1
27. Juli 2022
androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
und androidx.fragment:fragment-testing:1.5.1
sind veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Regressionsfehler in
DialogFragmentCallbacksDetector
behoben, bei dem die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Abhängigkeitsupdate
- Die Fragment-Bibliothek hängt jetzt von Lifecycle
2.5.1
ab. (Id204c) - Die Fragment-Bibliothek hängt jetzt von Activity
1.5.1
ab. (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:
Fragment
kann jetzt über Lifecycle2.5.0
-CreationExtras
ein zustandslosesViewModelProvider.Factory
bereitstellen. - Integration von Komponentendialogen:
DialogFragment
verwendet jetztComponentDialog
über Activity1.5.0
als Standarddialog, der vononCreateDialog()
zurückgegeben wird. - Refactoring des gespeicherten Instanzstatus: Bei Fragmenten hat sich die Art und Weise geändert, wie der Instanzstatus gespeichert wird. So soll klarer ersichtlich sein, welcher Status im Fragment gespeichert wurde und woher der Status stammt. Die aktuellen Änderungen umfassen Folgendes:
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einemBundle
anstatt direkt in einem benutzerdefiniertenParcelable
.- Ergebnisse, die über die
Fragment Result APIs
festgelegt wurden und noch nicht ausgeliefert wurden, werden jetzt separat vom internen Status derFragmentManager
gespeichert. - Der Status, der mit jedem einzelnen Fragment verknüpft ist, wird jetzt separat vom internen Status des
FragmentManager
gespeichert. So können Sie die Menge des gespeicherten Status, der mit einem einzelnen Fragment verknüpft ist, mit den eindeutigen IDs imFragment
-Debug-Logging korrelieren.
Weitere Änderungen
FragmentStrictMode
bietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu umgehen, indemallowViolation()
mit dem Klassennamen verwendet wird.- Die Fragment-APIs zum Bereitstellen eines Menüs für das
ActionBar
Ihrer Aktivität wurden eingestellt. Die in Aktivität1.4.0
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste API-Oberfläche, die von Fragmenten verwendet werden sollte.
Version 1.5.0-rc01
11. Mai 2022
androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
und androidx.fragment:fragment-testing:1.5.0-rc01
sind veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Refactoring des gespeicherten Instanzstatus
- Der Zustand, der jedem einzelnen Fragment zugeordnet ist, wird jetzt separat vom internen Zustand des
FragmentManager
gespeichert. So können Sie die Menge des gespeicherten Zustands, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Fragment-Debug-Logging korrelieren. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
und androidx.fragment:fragment-testing:1.5.0-beta01
sind veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragment
hat eine neuedismissNow
-Methode hinzugefügt, diecommitNow
verwendet, um mit dershowNow
-Funktion übereinzustimmen. Dadurch wird dasDialog
nicht sofort geschlossen, sondern nur der Status desFragmentManager
synchron aktualisiert. (I15c36, b/72644830)
Refactoring des gespeicherten Instanzstatus
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einemBundle
anstatt direkt in einem benutzerdefiniertenParcelable
. Dies ist der erste Schritt, um mehr Transparenz darüber zu schaffen, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)- Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht zugestellt wurden, werden jetzt separat vom internen Status des
FragmentManager
gespeichert. So können Sie besser nachvollziehen, welche Ergebnisse als Teil des gespeicherten Instanzstatus gespeichert werden. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6. April 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
und androidx.fragment:fragment-testing:1.5.0-alpha05
sind veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.
API-Änderungen
Fragment
ssetHasOptionsMenu()
wurde eingestellt. Zum Verwalten von Menüs und ihren Menüpunkten sollten gemäß den Versionshinweisen zu Fragment1.5.0-alpha04
die 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
ActionBar
Ihrer 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-alpha01
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste API-Oberfläche, die von Fragmenten verwendet werden sollte. (I50a59, I20758)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 1.5.0-alpha03
23. Februar 2022
androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
und androidx.fragment:fragment-testing:1.5.0-alpha03
sind veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtras
an die Funktionenby viewModels()
undby activityViewModels()
übergeben. (Ibefe7, b/217601110)
Geändertes Verhalten
DialogFragment
verwendet jetztComponentDialog
als Standarddialog, der vononCreateDialog()
zurückgegeben wird. (If3784, b/217618170)
Version 1.5.0-alpha02
9. Februar 2022
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
und androidx.fragment:fragment-testing:1.5.0-alpha02
sind veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
bietet jetzt die Möglichkeit, bestimmte Verstöße bei privaten Drittanbieter-Fragmenten zu umgehen, indemallowViolation()
mit dem Klassennamen verwendet wird. (I8f678)
Version 1.5.0-alpha01
26. Januar 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
und androidx.fragment:fragment-testing:1.5.0-alpha01
sind veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragment
ist jetzt in ViewModel CreationExtras integriert, die im Rahmen von Lifecycle2.5.0-alpha01
eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Fragment
1.4.1
FragmentContainerView
:FragmentContainerView
löst keine Ausnahme für einen ungültigen Status mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Aus Fragment
1.4.1
: Wenn Sie eine benutzerdefinierteownerProducer
-Lambda-Funktion mit der Lazy-Funktionby viewModels()
verwenden, wird jetzt diedefaultViewModelProviderFactory
des Inhabers verwendet, wenn keine benutzerdefinierteViewModelProvider.Factory
angegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513) - Ein Absturz beim erstmaligen Zugriff auf eine
ViewModel
über einenregisterForActivityResult()
-Callback einerFragment
wurde behoben. (Iea2b3)
Version 1.4
Version 1.4.1
26. Januar 2022
androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
und androidx.fragment:fragment-testing:1.4.1
sind veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
- Bei
FragmentContainerView
wird keine Ausnahme für einen unzulässigen Status mehr ausgelöst, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Wenn Sie eine benutzerdefinierte
ownerProducer
-Lambda-Funktion mit der Lazy-Funktionby viewModels()
verwenden, wird jetzt diedefaultViewModelProviderFactory
des entsprechenden Inhabers verwendet, wenn keine benutzerdefinierteViewModelProvider.Factory
angegeben ist. Bisher wurde immer die Factory des Fragments verwendet. (I56170, b/214106513)
Version 1.4.0
17. November 2021
androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
und androidx.fragment:fragment-testing:1.4.0
sind veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Die
FragmentStrictMode
-APIs bieten Laufzeitprüfungen, mit denen Sie überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. DieFragmentStrictMode.Policy
, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue MethodesetStrictModePolicy()
für einFragmentManager
festgelegt werden. Diese Richtlinie gilt für diesenFragmentManager
und transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. Weitere Informationen finden Sie unter StrictMode für Fragmente. FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Hier wird dieselbe Logik wie beifindFragmentById()
mit der ID vonFragmentContainerView
verwendet, der Aufruf kann aber verkettet werden.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
implementiert jetztCloseable
. Sie können es also mit deruse
-Methode von Kotlin oder try-with-resources verwenden.FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll.Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue Statusmanager ist jetzt die einzige verfügbare Option.
Mehrere Backstacks
Der FragmentManager
verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack()
verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In dieser Version werden diese Mechanismen durch drei neue FragmentManager
-APIs erweitert: saveBackStack(String name)
, restoreBackStack(String name)
und clearBackStack(String name)
. Diese APIs verwenden dieselbe name
wie addToBackStack()
, um den Status von FragmentTransaction
und den Status jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
, da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()
ist immer inklusive.- Im Gegensatz zu
popBackStack()
, bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert beisaveBackStack()
nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem nicht leeren Namen ausgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und der Status wiederhergestellt wird und alleViewModel
-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden (undonCleared()
nicht für sie aufgerufen wird).
Die Fragmenttransaktionen, die mit saveBackStack()
verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Für jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit
FragmentManager
nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack()
, restoreBackStack()
und clearBackStack()
, mit denen ein zuvor gespeicherter Backstack wiederhergestellt bzw. gelöscht wird, passiert bei beiden nichts, wenn Sie saveBackStack()
nicht zuvor mit demselben Namen aufgerufen haben.
Weitere Informationen finden Sie unter Multiple back stacks: A deep dive.
Version 1.4.0-rc01
3. November 2021
androidx.fragment:fragment:1.4.0-rc01
wurde ohne Änderungen gegenüber Fragment 1.4.0-beta01 veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Version 1.4.0-beta01
27. Oktober 2021
androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
und androidx.fragment:fragment-testing:1.4.0-beta01
sind veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Übergeordnete Fragmente senden
onHiddenChanged()
jetzt an die gesamte Hierarchie, bevor sie ihren eigenen Callback starten. (Iedc20, b/77504618) - Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit einer geöffneten Tastatur zu einem Fragment mit einer RecyclerView wechseln. (I8b842, b/196852211)
DialogFragment
verwendet jetztsetReorderingAllowed(true)
für alle Transaktionen, die beim Aufrufen vonshow()
,showNow()
oderdismiss()
erstellt werden. (Ie2c14)- Die extrem lange Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransaction
wurde aufDetachAndAttachSameFragment
gekürzt. (e9eca3)
Version 1.4.0-alpha10
29. September 2021
androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
und androidx.fragment:fragment-testing:1.4.0-alpha10
sind veröffentlicht. Version 1.4.0-alpha10 enthält diese Commits.
Lint
- Die Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransaction
wurde hinzugefügt, um zu erkennen, wenn sowohldetach()
als auchattach()
für dasselbeFragment
im selbenFragmentTransaction
aufgerufen 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
FragmentAddMenuProvider
wurde hinzugefügt, um die Verwendung des Fragment-Lebenszyklus für den Fragment-View-Lebenszyklus zu korrigieren, wenn dieaddMenuProvider
API vonMenuHost
verwendet wird. (aosp/1830457, b/200326272)
Aktualisierungen der Dokumentation
- Die Einstellungsmitteilung für APIs, die jetzt von den Activity Result APIs (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
undonRequestPermissionsResult
) verarbeitet werden, wurde um weitere Details ergänzt. (cce80f) - Die Mitteilung zur Einstellung von
onActivityCreated()
fürFragment
undDialogFragment
wurde um weitere Details ergänzt. (224db4)
Version 1.4.0-alpha09
15. September 2021
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
und androidx.fragment:fragment-testing:1.4.0-alpha09
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
FragmentContainerView
wurde in Kotlin neu geschrieben, damit die FunktiongetFragment
die Nullable-Eigenschaft richtig berücksichtigt. (If694a, b/189629145) - FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506)
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem der Status eines Fragments, das mit
setReorderingAllowed(true)
hinzugefügt und dann sofort vor der Ausführung ausstehender Transaktionen entfernt wurde, nicht richtig bereinigt wurde. (I8ccb8)
Version 1.4.0-alpha08
1. September 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
und androidx.fragment:fragment-testing:1.4.0-alpha08
sind veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Die
UseRequireInsteadOfGet
-Lint-Prüfung wurde verbessert, um redundante Klammern besser zu verarbeiten. (I2d865) - Die
UseGetLayoutInflater
-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu berücksichtigen. (Ie5423)
Version 1.4.0-alpha07
18. August 2021
androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
und androidx.fragment:fragment-testing:1.4.0-alpha07
werden ohne nennenswerte Änderungen veröffentlicht. Version 1.4.0-alpha07 enthält diese Commits.
Version 1.4.0-alpha06
4. August 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
und androidx.fragment:fragment-testing:1.4.0-alpha06
sind veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit mehreren Backstacks wurde behoben, das beim schnellen Wechsel zwischen Backstacks auftrat und dazu führte, dass beim Wiederherstellen eines
FragmentTransaction
einIllegalStateException
oder eine zweite Kopie eines Fragments angezeigt wurde. (I9039f) - Ein Problem wurde behoben, durch das
FragmentManager
eine Kopie des zuvor übersaveBackStack()
gespeicherten Status beibehalten hat, auch nachdem dieser Status wiederhergestellt wurde. (Ied212) - Die
dismissAllowingStateLoss()
-Methode vonDialogFragment
stü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 aufGONE
gesetzt, wennhide()
verwendet wird und die StammansichttransitionGroup=”true”
festgelegt hat. (aosp/1766655, b/193603427) - Ab Fragment
1.3.6
:FragmentActivity
wird der gespeicherte Status jetzt immer als erster Vorgang in den überschriebenen Lebenszyklus-Callbacks entsperrt. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6
: Fragmente sind jetzt von Activity1.2.4
abhä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
FragmentManager
verwendet jetztSavedStateRegistry
, um den Status zu speichern. Die MethodensaveAllState()
undrestoreSavedState()
wurden inFragmentController
ebenfalls verworfen. Wenn SieFragmentController
verwenden, um Fragmente außerhalb vonFragmentActivity
zu hosten, sollte IhrFragmentHostCallbacks
SavedStateRegistryOwner
implementieren. (Iba68e, b/188734238)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Aufruf von
saveBackStack()
als Teil der Unterstützung mehrerer Backstacks fehlschlug, wenn er gleichzeitig mit der Ausführung einesFragmentTransaction
erfolgte, in demreplace()
verwendet wurde. (I73137) - Ein
NullPointerException
wurde behoben, der nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen bei Verwendung derrestoreBackStack()
API für die Unterstützung mehrerer Backstacks auftreten konnte. Außerdem wurde ein Problem behoben, bei demsetReorderingAllowed(true)
nicht für alle Transaktionen geprüft wurde. (I8c593) - Ein Problem wurde behoben, bei dem
FragmentManager
fälschlicherweise weiterhin den zuvor gespeicherten Status von Fragmenten wiederhergestellt hat, auch nachdem diese Fragmente ausFragmentManager
entfernt wurden. Dadurch ist der gespeicherte Status im Laufe der Zeit immer weiter gewachsen. (I1fb8e)
Version 1.4.0-alpha03
16. Juni 2021
androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
und androidx.fragment:fragment-testing:1.4.0-alpha03
sind veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- Alle StrictMode-Klassen für Fragmente
Violation
wurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638)FragmentTagUsageViolation
enthält jetzt eine detailliertere Fehlermeldung, die den übergeordneten Container enthält, dem das Fragment hinzugefügt worden wäre. (Ic33a7)- Für
WrongFragmentContainerViolation
gibt es jetzt eine detailliertere Fehlermeldung, die den Container enthält, dem das Fragment hinzugefügt wurde. (Ib55f8) - Die Anwendungsfallklassen für
TargetFragmentUsageViolation
enthalten jetzt detailliertere Fehlermeldungen, die das Fragment, das den Verstoß verursacht, und alle anderen enthaltenen Informationen enthalten. (Icc6ac) - Die Klassen, die
RetainInstanceUsageViolation
erweitern, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55) FragmentReuseViolation
enthält jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)SetUserVisibleHintViolation
enthält jetzt eine detailliertere Fehlermeldung, die angibt, auf welchen Wert der für den Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)
Geändertes Verhalten
- Die Einschränkung für den Aufruf von
fitsSystemWindows
auf einemFragmentContainerView
wurde 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.4
durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
festgelegt) und bei gemeinsam genutzten Elementen werden keineIndexOutOfBoundsException
s mehr ausgegeben. (I16484, b/188679569, b/188969304) - Die
FragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730) - Der Lint-Check
OnCreateDialogIncorrectCallback
stürzt nicht mehr ab, wenn eine Variable der obersten Ebene ausgewertet wird. (0a9efa, b/189967522)
Version 1.4.0-alpha02
2. Juni 2021
androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
und androidx.fragment:fragment-testing:1.4.0-alpha02
sind veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
protokolliert jetzt immer Verstöße, wenn das Logging über dieFragmentManager
aktiviert ist, unabhängig von der aktuellen Richtlinie für den strengen Modus. (I02df6, b/187872638)FragmentStrictMode
unterstützt jetzt das Ausschließen bestimmterFragment
-Klassen aus dem strengen ModusViolation
, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)Die Klasse
FragmentStrictMode
Violation
wurde erweitert, um Strukturinformationen basierend auf den einzelnen Verstößen hinzuzufügen. So können Sie genau nachvollziehen, was den Verstoß verursacht hat. Das entsprechende Fragment (If5118, b/187871150) ist jeweils inViolation
enthalten:WrongFragmentContainerViolation
enthält jetzt dieViewGroup
, der dieFragment
hinzugefügt werden sollte. (I83c75, b/187871150)TargetFragmentUsageViolation
wurde inSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
undGetTargetFragmentRequestCodeUsageViolation
aufgeteilt.SetTargetFragmentUsageViolation
enthält das Zielfragment und den Anfragecode. (I741b4, b/187871150)SetUserVisibleHintViolation
enthält jetzt den booleschen Wert, der ansetUserVisibleHint()
übergeben wurde. (I00585, b/187871150)FragmentTagUsageViolation
enthält jetzt die ViewGroup, in die das<fragment>
-Tag versucht hat, ein Fragment einzufügen.(I5dbbc, b/187871150)FragmentReuseViolation
enthält jetzt die eindeutige ID der vorherigen Instanz vonFragment
, die den Verstoß verursacht hat. (I0544d, b/187871150)RetainInstanceUsageViolation
ist jetzt abstrakt und hat zwei Unterklassen,SetRetainInstanceUsageViolation
undGetRetainInstanceUsageViolation
, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)
Geändertes Verhalten
FragmentContainerView
löst jetzt eine Ausnahme aus, wenn versucht wird, das AttributfitsSystemWindow
programmatisch 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
FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Hier wird dieselbe Logik wie beifindFragmentById()
mit der ID vonFragmentContainerView
verwendet, der Aufruf kann aber verkettet werden. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
wurde hinzugefügt, um anzugeben, ob die Standardanimation für Aktivitätsübergänge aus Ihrem Design bei Fragmentübergängen aktiviert werden soll. (I46652)
Mehrere Backstacks
Der FragmentManager
verwaltet einen Backstack, der aus Fragmenttransaktionen besteht, bei denen addToBackStack()
verwendet wurde. So können Sie diese Transaktionen aus dem Stapel entfernen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In dieser Version werden diese Mechanismen durch zwei neue FragmentManager
-APIs erweitert: saveBackStack(String name)
und restoreBackStack(String name)
. Diese APIs verwenden dieselbe name
wie addToBackStack()
, um den Status von FragmentTransaction
und den Status jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Status wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
, da sie asynchron ist und dazu führt, dass alle Fragmenttransaktionen bis zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()
ist immer inklusive.- Im Gegensatz zu
popBackStack()
, bei dem alle Transaktionen im Backstack entfernt werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Null-Name angegeben wird, passiert beisaveBackStack()
nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem nicht leeren Namen ausgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und der Status wiederhergestellt wird und alleViewModel
-Instanzen, die mit diesen Fragmenten verknüpft sind, beibehalten werden (undonCleared()
nicht für sie aufgerufen wird).
Die Fragmenttransaktionen, die mit saveBackStack()
verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Für jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwendet werden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich abgeschlossen sein.Das heißt, sie dürfen nicht explizit auf Fragmente außerhalb dieser Transaktionen verweisen. So kann sichergestellt werden, dass sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen am Backstack in der Zwischenzeit vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in seiner transitiven Menge von untergeordneten Fragmenten haben, damit
FragmentManager
nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack()
passiert bei restoreBackStack()
nichts, wenn Sie saveBackStack()
nicht zuvor mit demselben Namen aufgerufen haben. (b/80029773)
StrictMode für Fragmente
Die FragmentStrictMode
-APIs bieten Laufzeitprüfungen, mit denen Sie überprüfen können, ob Ihre App oder Bibliotheken, von denen Sie abhängig sind, keine eingestellten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Log-Nachricht ausgeben, einen benutzerdefinierten Listener auslösen oder Ihre App abstürzen lassen. Die FragmentStrictMode.Policy
, mit der gesteuert wird, welche Prüfungen aktiviert sind und welche „Sanktionen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy()
für ein FragmentManager
festgelegt werden. Diese Richtlinie gilt für diesen FragmentManager
und transitiv für alle untergeordneten Fragmentmanager, für die keine eigene eindeutige Richtlinie festgelegt ist. (#123, #131, #150, b/143774122)
- Mit
detectFragmentReuse()
wird erkannt, ob eine zuvor entfernteFragment
-Instanz wieder einerFragmentManager
hinzugefügt wird. Sie sollten niemals mit einerFragment
-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie zerstört und aus einemFragmentManager
entfernt wurde. (#142, b/153738653) detectFragmentTagUsage()
erkennt, wenn Sie das<fragment>
-Tag in Ihrem Layout-XML verwenden. Sie sollten immerFragmentContainerView
verwenden, wenn Sie Fragmente als Teil Ihres Layouts einfügen. (#141, b/153738235)detectWrongFragmentContainer()
erkennt, wenn Sie einem Container, der keinFragmentContainerView
ist, ein Fragment hinzufügen. Verwenden Sie immerFragmentContainerView
als Container für Fragmente in Ihrem Layout. (#146, b/181137036)detectRetainInstanceUsage()
erkennt, wenn Sie die verworfenen APIssetRetainInstance()
odergetRetainInstance()
verwenden. (#140, b/153737954)detectSetUserVisibleHint()
erkennt, wenn Sie die eingestelltesetUserVisibleHint()
API verwenden. (#136, b/153738974)detectTargetFragmentUsage()
erkennt, wenn Sie die verworfenen APIssetTargetFragment()
,getTargetFragment()
odergetTargetRequestCode()
verwenden. (#139, b/153737745)
API-Änderungen
- Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue Statusmanager ist jetzt die einzige verfügbare Option. (I90036, b/162776418) FragmentScenario
implementiert jetztCloseable
. Sie können es also mit deruse
-Methode von Kotlin oder try-with-resources verwenden. (#121, b/143774122)
Neue Lint-Prüfungen
- Der
UseGetLayoutInflater
-Lint-Check warnt jetzt, wennLayoutInflater.from(Context)
in einemDialogFragment
verwendet wird. Sie sollten immer diegetLayoutInflater()
-Methode des Dialogfragments verwenden, um den entsprechenden Wert fürLayoutInflater
zu erhalten. (#156, b/170781346) - Der
DialogFragmentCallbacksDetector
-Lint-Check warnt jetzt, wennsetOnCancelListener
odersetOnDismissListener
in der MethodeonCreateDialog()
einesDialogFragment
aufgerufen wird. Diese Listener gehören zumDialogFragment
selbst. 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.3
eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()
-API mitViewModelProvider
oder die Jetpack Compose-MethodeviewModel()
in einem Fragment verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt dieViewModelProvider.Factory
verwendet, die von Ihrem Fragment bereitgestellt wird, wenn siegetDefaultViewModelProviderFactory()
überschreibt (wie bei mit@AndroidEntryPoint
annotierten Fragmenten bei Verwendung von Hilt). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eineSavedStateViewModelFactory
erstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Ab Fragment 1.3.4: Wenn
FragmentContainerView
unter API 29 verwendet wird, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben. (I1bb78, b/186012452) - Aus Fragment 1.3.4: Sie können jetzt Ihr Parcelable nach dem Beenden des Prozesses aus dem Fragmentergebnis-Bundle abrufen. (I65932, b/187443158)
- Ab Fragment 1.3.4: Wenn Sie einen Übergang mit gemeinsam genutzten Elementen für eine ViewGroup ausführen und
transitionGroup
auf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)
Externe Beiträge
- Vielen Dank an simonschiller für die Implementierung von
Closeable
inFragmentScenario
. (#121, b/143774122) - Vielen Dank an simonschiller, der die gesamte
FragmentStrictMode
API 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
:FragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein Fragment zu verbergen, das gerade entfernt wird. (I573dd, b/183634730) - Die Ansicht des Fragments wird jetzt richtig auf
GONE
gesetzt, wennhide()
verwendet wird und für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) FragmentActivity
entsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den überschriebenen Lebenszyklus-Callbacks. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6
: Fragmente sind jetzt von Activity1.2.4
abhängig (I3a66c)
Version 1.3.5
16. Juni 2021
androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
und androidx.fragment:fragment-testing:1.3.5
sind veröffentlicht. Version 1.3.5 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Regression bei Übergängen mit gemeinsam genutzten Elementen behoben, die in Fragment
1.3.4
durch aosp/1679887 eingeführt wurde. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
festgelegt) und bei gemeinsam genutzten Elementen werden keineIndexOutOfBoundsException
s 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.3
eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder der Jetpack Compose-MethodeviewModel()
in einem Fragment bei Verwendung von Hilt verwendet wurde. In diesen Anwendungsfällen wird jetzt korrekt dieViewModelProvider.Factory
verwendet, die von Ihrem Fragment bereitgestellt wird, wenngetDefaultViewModelProviderFactory()
überschrieben wird (wie bei mit@AndroidEntryPoint
annotierten Fragmenten). Wenn Sie diese Methode nicht überschreiben, wird als Standardfactory eineSavedStateViewModelFactory
erstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Wenn Sie
FragmentContainerView
in API 29 verwenden, werden Insets nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben. (I1bb78, b/186012452) - Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Wenn Sie eine Übergangsanimation für ein gemeinsames Element für eine ViewGroup ausführen und
transitionGroup
für die ViewGroup auf „false“ gesetzt ist, wird die Übergangsanimation jetzt korrekt ausgeführt. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
und androidx.fragment:fragment-testing:1.3.3
sind veröffentlicht. Version 1.3.3 enthält diese Commits.
Neue Funktionen
- Die Verwendung von
SavedStateViewModelFactory
funktioniert jetzt, wenn sie mit demSavedStateRegistryOwner
verwendet wird, das durch die Verwendung vonViewTreeSavedStateRegistryOwner.get()
mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)
Fehlerkorrekturen
- Es wurde ein Regressionsfehler behoben, der in Fragment
1.3.2
eingeführt wurde und dazu führte, dasspopEnter
-Animationen nicht ausgeführt wurden, wenn einFragmentTransaction
mit einemsetPrimaryNavFragment
-Vorgang wie den vonNavHostFragment
verwendeten entfernt wurde. (I38c87, b/183877426) FragmentContainerView
sorgt jetzt dafür, dass für jedesFragment
ein neuer Satz vonWindowInsets
gesendet wird. So kann jedes Fragment die Insets unabhängig voneinander nutzen. (I63f68, b/172153900)- In
DialogFragment
werden 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 wieBottomSheetDialog
verwendet werden. (Ie6279, b/180021387) FragmentManager.dump()
rückt das erste Fragment in der Liste der aktiven Fragmente jetzt richtig ein. (If5c33, b/183705451)
Neue Fehlerkorrekturen für State Manager
- Der neue Fragment-Statusmanager verarbeitet jetzt Übergänge mit Ausblendvorgängen korrekt. (I9e4de, b/184830265)
Version 1.3.2
24. März 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
und androidx.fragment:fragment-testing:1.3.2
sind veröffentlicht. Version 1.3.2 enthält diese Commits.
Neue Fehlerkorrekturen für State Manager
- Wenn Sie sowohl
popBackStack()
- als auchcommit()
-Vorgänge gleichzeitig ausführen, wird mit dem letzten Vorgang jetzt die Richtung für alle Animationen festgelegt. Es werden also nicht mehr einige Pop- und einige Enter-Animationen ausgeführt. (I7072e, b/181142246) - Bei Übergängen mit gemeinsam genutzten Elementen wird der Übergangsname von Ansichten in einer Hierarchie mit gemeinsam genutzten Elementen nicht mehr gelöscht. (I4d4a6, b/179934757)
Abhängigkeitsupdates
- Das Fragment hängt jetzt von Activity 1.2.2 ab. Damit wird ein Problem mit dem
InvalidFragmentVersionForActivityResult
-Lint-Check von Activity bei Verwendung von Fragment 1.3.1 oder höher behoben. - Das Fragment hängt jetzt von Lifecycle 2.3.1 ab.
Version 1.3.1
10. März 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
und androidx.fragment:fragment-testing:1.3.1
sind veröffentlicht. Version 1.3.1 enthält diese Commits.
Neue Funktionen
- Dialogfelder in einem
DialogFragment
können jetzt über ihre DecorView auf ViewTree-Inhaber zugreifen. So kannDialogFragment
mitComposeView
verwendet werden. (Ib9290, b/180691023)
Fehlerkorrekturen
- Fragmente, die in eine bereits
RESUMED
-Aktivität mit FragmentContainerView eingefügt wurden, werden nach einer Konfigurationsänderung jetzt richtig angezeigt. (Ie14c8, b/180538371) - Am Ende des Fragments
toString()
(I54705, b/177761088) befindet sich kein zusätzliches}
mehr. - Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß das JavaDoc der Basismethode (I736ce, b/139548782).
- Die Dokumentation für
setFragmentResult
undsetFragmentResultListener
wurde aktualisiert. Die Parameterdokumentation spiegelt nun wider, dass keine Nullwerte mehr akzeptiert werden (I990ba, b/178348386).
Neue Fehlerkorrekturen für State Manager
- Ein Speicherleck in Fragmenten, das durch
mFocusedView
verursacht wurde, wurde behoben (Ib4e9e, b/179925887). - In Fragmenten wird jetzt
onCreateOptionsMenu
richtig aufgerufen, wenn show/hide-Transaktionen verwendet werden (I8bce8, b/180255554). - Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen jetzt ordnungsgemäß
RESUMED
(Ic11e6, b/180825150). - Mit dem Tag
<fragment>
eingefügte Fragmente werden jetzt immer inRESUMED
angezeigt. (I452ac, (I9fa49)
Abhängigkeitsupdates
- Fragment 1.3.1 hängt von Activity
1.2.1
ab. (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
FragmentManager
wurden zahlreiche Probleme beim Senden von Lifecycle-Ereignissen, Animationen und Übergängen sowie bei der Verarbeitung verzögerter Fragmente behoben. Activity Result API Integration: Unterstützung für die
ActivityResultRegistry
API, die in Activity1.2.0
eingeführt wurde, umstartActivityForResult()
+onActivityResult()
- undrequestPermissions()
+onRequestPermissionsResult()
-Abläufe zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen.- In diesem Release werden einige Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die dazu führen, dass die Activity Result API in früheren Versionen von
FragmentActivity
nicht funktioniert. Sie müssen auf Fragment 1.3.0 aktualisieren, um die Activity Result APIs in einemFragmentActivity
oderAppCompatActivity
zu verwenden.
- In diesem Release werden einige Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die dazu führen, dass die Activity Result API in früheren Versionen von
Fragment Result API: Es wurde Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs in
FragmentManager
hinzugefü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 ZustandSTARTED
befindet. 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ürFragmentActivity
undFragment
wurde eingestellt. Es wurde ein neuesFragmentOnAttachListener
hinzugefü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 KlasseFragmentScenario
aus demfragment-testing
-Artefakt wurde in Kotlin neu geschrieben und enthält eine Reihe von Verbesserungen:FragmentScenario
verwendet jetztsetMaxLifecycle()
, ummoveToState()
zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen gewährleistet und der Status des Fragments wird von der zugrunde liegenden Aktivität entkoppelt.- In
FragmentScenario
kann jetzt ein anfänglichesLifecycle.State
festgelegt werden, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu jedemLifecycle.State
gewechselt wird. - Es gibt jetzt eine Alternative zur
FragmentScenario
API vononFragment
in Form der Kotlin-reified-ErweiterungsmethodewithFragment
, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst.
ViewTree
-Unterstützung:Fragment
unterstützt jetzt die APIsViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
undViewTreeSavedStateRegistryOwner
, die in Lifecycle2.3.0
und SavedState1.1.0
hinzugefügt wurden. Daher wird das Fragment alsViewModelStoreOwner
und einSavedStateRegistryOwner
undLifecycleOwner
zurückgegeben, die an den View-Lebenszyklus des Fragments gebunden sind, wenn einView
in einemFragment
verwendet wird.TRANSIT_
-Animationsänderungen: Für die Standardeffekte des Fragments,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. Die Ressourcen, die zum Erstellen dieser Animatoren verwendet wurden, sind jetzt privat.Einstellung von
setRetainInstance()
: Die MethodesetRetainInstance()
für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor vonViewModel
und deronCleared()
-Callback, den er empfängt).Einstellung von ViewPager 1-Adaptern: Mit der Veröffentlichung von ViewPager2
1.0.0
wurden die KlassenFragmentPagerAdapter
undFragmentStatePagerAdapter
für die Interaktion mitViewPager
eingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren.
Version 1.3.0-rc02
27. Januar 2021
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
und androidx.fragment:fragment-testing:1.3.0-rc02
sind veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein übergeordnetes
DialogFragment
nach einer Konfigurationsänderung über einem untergeordnetenDialogFragment
angezeigt 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 einemAnimation
das auszublendende Fragment am Ende der Animation aufblitzte. (I57e22, b/175417675) - Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen jetzt
RESUMED
. (I1fc1d, b/177154873)
Neue Fehlerkorrekturen für State Manager
- Die Ansicht des Fragments
Lifecycle
verarbeitet jetzt Fälle korrekt, in denen die Ansicht des Fragments zerstört wird, bevorLifecycle
CREATED
erreicht. Dadurch werden Ausnahmen vom Typ „no event down from INITIALIZED“ vermieden. (eda2bd, b/176138645) - Fragmente, in denen
Animator
verwendet wird, werden jetzt in der richtigen Reihenfolge angezeigt, wennFragmentContainerView
verwendet wird. (Id9aa3, b/176089197)
Version 1.3.0-rc01
16. Dezember 2020
androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
und androidx.fragment:fragment-testing:1.3.0-rc01
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
Animation
zu einemFragmentContainerView
und beim Unterbrechen des Hinzufügens mit einem Pop-Vorgang auftraten. (I952d8) - Ein Problem wurde behoben, durch das die Ansicht des Fragments in der Ansichtshierarchie verblieb, wenn sie während der
onCreate()
- oderonViewCreated()
-Methoden ersetzt wurde. (I8a7d5) - Der Fokus wird jetzt korrekt auf die Stammansichten von Fragmenten zurückgesetzt, wenn sie fortgesetzt werden. (Ifc84b)
- Wenn Sie Pop- und Replace-Vorgänge in derselben Fragmenttransaktion kombinieren, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691).
Version 1.3.0-beta02
2. Dezember 2020
androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
und androidx.fragment:fragment-testing:1.3.0-beta02
sind veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Neue Funktionen
FragmentScenario
wurde vollständig in Kotlin konvertiert. Dabei wurde die Quell- und Binärkompatibilität durch die Verwendung der funktionalen Schnittstellen von Kotlin 1.4 fürFragmentAction
beibehalten. (I19d31)
Geändertes Verhalten
- FragmentContainerViews, in denen kein Fragment mit dem Attribut
class
oderandroid:name
eingefügt wird, können jetzt außerhalb einesFragmentActivity
verwendet werden. (Id4397, b/172266337) - Wenn Sie versuchen, die maximale Lebensdauer eines Fragments auf
DESTROYED
festzulegen, wird jetzt eineIllegalArgumentException
ausgelöst (Ie7651, b/170765622). - Beim Initialisieren eines FragmentScenario mit dem Status
DESTROYED
wird jetzt eineIllegalArgumentException
ausgelö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
Animator
oder eine derTRANSIT_FRAGMENT_
-Optionen verwendet wurde. (I92426, b/169874632) - Ein Problem wurde behoben, das dazu führte, dass Fragmente mit einem beendeten
Animation
nicht richtig zerstört wurden. (I83d65) - Beim Verlassen von Fragmenten, deren Effekte umgekehrt wurden, wird der Vorgang jetzt korrekt abgebrochen und mit dem richtigen Einblendungseffekt neu gestartet. (I62226, b/167092035)
- Es wurde ein Problem behoben, bei dem der Ausgang
Animator
eineshide()
nicht ausgeführt wurde. (Id7ffe) - Fragmente werden jetzt richtig angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
- Bei Fragmenten, die den Fokus während einer Animation entfernen, wird nicht mehr versucht, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie
RESUMED
erreichen (I38c65, b/172925703).
Externe Beiträge
FragmentFactory
speichert 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 StatusLifecycle
jetzt aufINITIALIZING
gesetzt werden, solange das Fragment nicht inCREATED
verschoben wurde. (b/159662173)
API-Änderungen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Geändertes Verhalten
- Fragmentressourcendateien wurden korrekt privat gemacht. (aosp/1425237)
Fehlerkorrekturen
- Mit dem Tag
<fragment>
eingefügte Fragmente warten jetzt ordnungsgemäß, bis ihre Ansichten einem Container hinzugefügt werden, bevor sie in den Status STARTED wechseln (I02f4c). - Bei Fragmenten, die sichtbar sind und dann
setMaxLifecycle()
bisCREATED
, werden die Exit-Effekte jetzt richtig ausgeführt. (b/165822335) - Das Entfernen eines getrennten Fragments, das nicht dem Backstack hinzugefügt wurde, führt nicht mehr zu einem Speicherleck. Mit freundlicher Genehmigung von Nicklas Ansman Giertz. (b/166489383)
- Aktive Fragmente haben jetzt immer einen nicht leeren
FragmentManager
und Fragmente mit einem nicht leerenFragmentManager
werden immer als aktiv betrachtet. (aosp/1422346) - Für die Standardeffekte von Fragmenten,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. (b/166155034)
Neue Fehlerkorrekturen für State Manager
- Der Fokusstatus von Ansichten in Fragmenten wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
- Fragmente, die nur einen Übergang für ein gemeinsames Element haben, schließen jetzt ihre Spezialeffekte ordnungsgemäß ab und erreichen ihren endgültigen Status (Iaebc7, b/166658128).
- Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie zerstört werden. (Id5876)
- Der neue Statusmanager entfernt jetzt immer die Ansicht des beendeten Fragments, bevor er die Ansicht des neuen Fragments hinzufügt. (I41a6e)
- Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie die Ansicht eines Eingabefragments vor Beginn der Animation auf
INVISIBLE
setzen, bleibt es also tatsächlich unsichtbar. (b/164481490) - Bei Fragmenten hat
Animators
jetzt Vorrang vorAnimations
. Das bedeutet, dass bei einem Fragment mit beiden nurAnimator
ausgeführt undAnimation
ignoriert wird. (b/167579557) - Der neue Statusmanager führt nicht mehr dazu, dass Fragmente bei der Verwendung von Übergangsanimationen flackern. (b/163084315)
Bekanntes Problem
Wenn Sie bei Verwendung des neuen Statusmanagers während eines Eingabeeffekts auf „Zurück“ drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt. Das Ergebnis ist ein leerer Bildschirm. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19. August 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
und androidx.fragment:fragment-testing:1.3.0-alpha08
sind veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.
Neuer State Manager
Diese Version enthält ein umfassendes Refactoring der internen Statusverwaltung von FragmentManager
, das sich auf das Senden von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung von verzögerten Transaktionen auswirkt. Diese Einstellung ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost „Fragments: Rebuilding the Internals“. (b/139536619, b/147749580)
- Mit einer experimentellen API in
FragmentManager.enableNewStateManager(boolean)
kann gesteuert werden, ob FragmentManager den neuen Statusmanager verwendet. (I7b6ee)
Die folgenden Probleme werden nur behoben, wenn Sie den neuen Statusmanager verwenden:
- Das vorherige Fragment eines
replace
-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580) - Durch die Verwendung von Fragmenten werden mehrere konkurrierende Animationen für dieselben Fragmente verhindert. So wird vermieden, dass ein
Animation
alleTransition
-Effekte überschreibt oder dass einAnimator
und einTransition
für ein einzelnes Fragment gleichzeitig ausgeführt werden. (b/149569323) - Die
enterTransition
undexitTranstion
aller ein- und ausgehenden Fragmente werden jetzt ausgeführt und nicht nur das letzte eingehende und das erste ausgehende Fragment. (b/149344150) - Verschobene Fragmente bleiben nicht mehr im Status
CREATED
hängen, sondern wechseln mit anderen Fragmenten in den StatusSTARTED
. (b/129035555) - Ein Problem wurde behoben, bei dem
FragmentManager
Vorgänge in falscher Reihenfolge ausgeführt hat, wenn eine verschobene, neu geordnete Transaktion und eine nicht neu geordnete Transaktion kombiniert wurden. (b/147297731) - Wenn mehrere Fragmente gleichzeitig eingeblendet werden, sind Zwischenfragmente beim Verschieben von Fragmenten nicht mehr vorübergehend sichtbar. (b/37140383)
FragmentManager
gibt jetzt die richtigen Fragmente zurück, wennfindFragmentById()
oderfindFragmentByTag()
aus demonAttachFragment()
-Callback aufgerufen wird. (b/153082833)- In Fragmenten wird
onCreateView()
nicht mehr aufgerufen, wenn Fragmente zerstört werden, während das Fragment, das sie ersetzt, verzögert wird. (b/143915710) - In der Fehlermeldung, die beim Versuch angezeigt wird, Framework-Instanzen
Transition
und AndroidX-InstanzenTransition
zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang erwähnt. (b/155574969)
Geändertes Verhalten
- Sie können
launch()
jetzt für einActivityResultLauncher
in deronCreate()
-Lebenszyklusmethode eines Fragments aufrufen. (b/161464278) - Wenn
registerForActivityResult()
nachonCreate()
aufgerufen wird, wird jetzt eine Ausnahme ausgelöst, die angibt, dass dies nicht zulässig ist. Bisher wurden nach einer Konfigurationsänderung keine Ergebnisse zurückgegeben. (b/162255449) FragmentActivity
verwendet jetzt dieOnContextAvailableListener
API, die in Aktivität1.2.0-alpha08
eingeführt wurde, um den Status vonFragmentManager
wiederherzustellen. Alle Listener, die Unterklassen vonFragmentActivity
hinzugefügt werden, werden nach diesem Listener ausgeführt. (I513da)
Fehlerkorrekturen
ActivityOptions
, die bei der Verwendung vonstartIntentSenderForResult()
übergeben werden, werden jetzt berücksichtigt. (b/162247961)
Bekanntes Problem
- Wenn Sie den neuen Statusmanager verwenden, wird die Sichtbarkeit, die Sie direkt nach
onViewCreated()
und voronResume()
für die Stammansicht des Fragments festlegen, vonFragmentManager
überschrieben, daFragmentManager
die Sichtbarkeit der Stammansicht steuert. Als Workaround sollten Sie immer die Vorgängehide()
undshow()
verwenden, um die Sichtbarkeit des Fragments zu ändern. (b/164481490)
Version 1.3.0-alpha07
22. Juli 2020
androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
und androidx.fragment:fragment-testing:1.3.0-alpha07
sind veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.
Neue Funktionen
FragmentScenario
unterstützt jetzt das Festlegen eines anfänglichen Lebenszyklusstatus vonCREATED
,STARTED
oderRESUMED
, anstatt das Fragment immer in den StatusRESUMED
zu versetzen. (b/159662750)- Es wurde eine Alternative zur
FragmentScenario
-API vononFragment
in Form der reifizierten Kotlin-ErweiterungsmethodewithFragment
hinzugefügt, mit der Sie einen Wert zurückgeben können. Insbesondere werden Ausnahmen, die im angegebenen Block ausgelöst werden, noch einmal ausgelöst. (b/158697631)
Geändertes Verhalten
FragmentScenario
verwendet jetztsetMaxLifecycle()
, ummoveToState()
zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen gewährleistet und der Status des Fragments wird von der zugrunde liegenden Aktivität entkoppelt. (b/156527405)- Der von
ViewTreeSavedStateRegistryOwner
zurückgegebeneSavedStateRegistryOwner
ist jetzt an den Lebenszyklus der Fragmentansicht gebunden. So wird sichergestellt, dass der Zustand gleichzeitig mit der Ansicht des Fragments gespeichert und wiederhergestellt wird. (b/158503763)
Fehlerkorrekturen
- Fragmente warten jetzt darauf, dass die Ansicht des Fragments angehängt wird, bevor
ViewCompat.requestApplyInsets()
aufgerufen wird. So werden Fälle vermieden, in denen die Inset-Anfrage verworfen wurde. (b/158095749) - Beim Aufrufen von
clearFragmentResultListener
wird 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ürFragmentActivity
undFragment
wurde eingestellt. Es wurde ein neuesFragmentOnAttachListener
hinzugefügt, um eine flexiblere Alternative zu bieten. Damit kannonAttachFragment()
an separate, testbare Listener delegiert werden. Außerdem wird das Hinzufügen eines Listeners zu anderen FragmentManagers als dem direkten untergeordneten FragmentManager unterstützt. (I06d3d)
Fehlerkorrekturen
- Der Ansichtsstatus von übergeordneten Fragmenten wird jetzt vor dem ihrer untergeordneten Fragmente wiederhergestellt. Dadurch wird ein Problem mit der visuellen Reihenfolge nach einer Konfigurationsänderung behoben, wenn in einem
DialogFragment
ein anderesDialogFragment
als untergeordnetes Fragment angezeigt wird. (b/157195715) - Ein Problem wurde behoben, bei dem der
UseRequireInsteadOfGet
-Lint-Check verkettete Verwendungen der Operatoren?.
und!!
nicht richtig verarbeitet hat. (b/157677616)
Version 1.3.0-alpha05
20. Mai 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
und androidx.fragment:fragment-testing:1.3.0-alpha05
sind veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für
ViewTreeViewModelStoreOwner
aus Lifecycle2.3.0-alpha03
undViewTreeSavedStateRegistryOwner
aus SavedState1.1.0-alpha01
bei Verwendung einesView
in einemFragment
wurde hinzugefügt. (aosp/1297993, aosp/1300264)
API-Änderungen
- Die APIs
setFragmentResult()
undsetFragmentResultListener()
akzeptieren jetzt jeweils einenBundle
- und einenFragmentResultListener
-Wert, der nicht null ist. Verwenden Sie die neuen MethodenclearFragmentResult()
undclearFragmentResultListener()
, um ein zuvor festgelegtes Ergebnis oder einen Listener explizit zu löschen. (b/155416778) - Die
setFragmentResultListener()
-Kotlin-Erweiterungen, die ein Lambda verwenden, sind jetzt alsinline
markiert. (b/155323404)
Geändertes Verhalten
- Die zuvor eingestellten
startActivityForResult()
,startIntentSenderForResult()
undrequestPermissions
aufFragment
verwenden jetzt internActivityResultRegistry
. Dadurch entfällt die Einschränkung, dass bei der Verwendung dieser APIs nur die unteren Bits (unter0xFFFF
) für Ihre Anfragecodes verwendet werden dürfen. (b/155518741)
Aktualisierungen der Dokumentation
- Die Dokumentation zu den Konstruktoren
Fragment(@LayoutRes int)
undDialogFragment(@LayoutRes int)
wurde erweitert, um zu verdeutlichen, dass sie beim Verwenden des Standard-FragmentFactory
aus 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
FragmentManager
hinzugefü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 ZustandSTARTED
befindet. (b/149787344)
API-Änderungen
- Die Ziel-Fragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
- Die APIs
startActivityForResult()
/onActivityResult()
undrequestPermissions()
/onRequestPermissionsResult()
für Fragment wurden eingestellt. Verwenden Sie die Activity Result APIs. (aosp/1290887) - Funktionsgefährdende Änderung in Aktivität
1.2.0-alpha04
: Die MethodeprepareCall()
wurde inregisterForActivityResult()
umbenannt. (aosp/1278717)
Fehlerkorrekturen
- Die
getViewLifecycleOwner()
des Fragments wird jetzt vor dem Aufruf vononSaveInstanceState()
beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. (b/153593580) - Ein
illegalStateException
wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einesDialogFragment
mitFragmentContainerView
aufgetreten ist. (b/154366601) - Die Methode
getDefaultViewModelProviderFactory()
für Fragmente stürzt nicht mehr ab, wenn Sie Ihre Fragmente außerhalb einer Aktivität hosten. (b/153762914)
Version 1.3.0-alpha03
1. April 2020
androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
und androidx.fragment:fragment-testing:1.3.0-alpha03
sind veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
prepareCall
-Methoden fürFragment
sind jetztfinal
. (b/152439361)
Fehlerkorrekturen
- Ein in Fragment
1.3.0-alpha02
eingeführter Regressionsfehler bei der Verwendung vonBottomSheetDialogFragment
wurde behoben. (b/151652127, aosp/1263328, aosp/1265163) - Ein Absturz bei der Verwendung von
prepareCall
aus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004) - Ein Problem wurde behoben, bei dem Übergänge für gemeinsame Elemente und Exit-Übergänge bei Verwendung von
setTargetFragment()
ignoriert wurden. (b/152023196) - Fragment
1.2.4
: Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338) - Aus Fragment
1.2.4
: DieFragmentLiveDataObserve
-Lint-Regel fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und der View-Lebenszyklus immer synchron sind. Daher kann beim Aufrufen vonobserve
entwederthis
oderviewLifecycleOwner
verwendet werden. (b/151765086)
Änderungen an Abhängigkeiten
- Fragmente sind von Activity
1.2.0-alpha03
abhängig, in der die Activity Result API, die in Activity1.2.0-alpha02
eingeführt wurde, erheblich verbessert wurde.
Version 1.3.0-alpha02
18. März 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
und androidx.fragment:fragment-testing:1.3.0-alpha02
sind veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Unterstützung für die
ActivityResultRegistry
API hinzugefügt, die in Activity1.2.0-alpha02
eingeführt wurde, um die AbläufestartActivityForResult()
+onActivityResult()
undrequestPermissions()
+onRequestPermissionsResult()
zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie unter Ergebnis aus einer Aktivität abrufen. (b/125158199)
API-Änderungen
DialogFragment
bietet jetzt einen Konstruktor, der ein@LayoutRes
verwendet, das das Layout angibt, dasonCreateView()
standardmäßig aufblähen soll. (b/150327080)- Die Methode
onActivityCreated()
ist jetzt veraltet. Code, der die Ansicht des Fragments betrifft, sollte inonViewCreated()
(die unmittelbar voronActivityCreated()
aufgerufen wird) und anderer Initialisierungscode inonCreate()
stehen. Wenn Sie einen Rückruf erhalten möchten, sobald dieonCreate()
der Aktivität abgeschlossen ist, sollte einLifeCycleObserver
für dieLifecycle
der Aktivität inonAttach()
registriert und entfernt werden, sobald deronCreate()
-Rückruf empfangen wurde. (b/144309266)
Fehlerkorrekturen
- Fragment
1.2.3
: Ein Fehler inDialogFragment
wurde behoben, der beim Aufrufen vongetLayoutInflater()
ausonCreateDialog()
heraus einenStackOverflowError
verursachte. (b/117894767, aosp/1258664) - Fragment
1.2.3
: Der Umfang der enthaltenen ProGuard-Regeln für Fragment wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169) - Fragment
1.2.3
: Falsch positive Ergebnisse imUseRequireInsteadOfGet
-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Namen der Kotlin-Property überschattete. (b/149891163) - Fragment
1.2.3
:FragmentContainerView
löst bei Verwendung des falschen Konstruktors in der Layoutvorschau keinenUnsupportedOperationException
mehr aus. (b/149707833)
Bekannte Probleme
BottomSheetDialogFragment
positioniert das Dialogfeld nicht mehr richtig auf dem Bildschirm. (b/151652127)
Version 1.3.0-alpha01
4. März 2020
androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
und androidx.fragment:fragment-testing:1.3.0-alpha01
sind veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Unterstützung für die in Lifecycle
2.3.0-alpha01
hinzugefügteViewTreeLifecycleOwner.get(View)
API wurde hinzugefügt, sodass dieviewLifecycleOwner
des Fragments alsLifecycleOwner
für alle vononCreateView()
zurückgegebenen Ansichten zurückgegeben wird. (aosp/1182955)
API-Änderungen
- Die Methode
setRetainInstance()
für Fragmente ist veraltet. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten von Status, der mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den beibehaltenen Status separat verwalten. Dadurch wird eine häufige Quelle für Lecks vermieden und gleichzeitig die nützlichen Eigenschaften des einmaligen Erstellens und Zerstörens des beibehaltenen Status beibehalten (nämlich der Konstruktor vonViewModel
und deronCleared()
-Callback, den er empfängt). (b/143911815) - Mit der Veröffentlichung von ViewPager2
1.0.0
wurden die KlassenFragmentPagerAdapter
undFragmentStatePagerAdapter
für die Interaktion mitViewPager
verworfen. 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.1
eingeführt wurde. (b/149665169 - Die in Fragment
1.2.2
hinzugefügtenrequire___()
-Lint-Regeln liefern nicht mehr fälschlicherweise positive Ergebnisse für lokale Variablen, die denselben Namen wie die überschatteten Kotlin-Property-Namen haben (z.B.view
). (b/149891163) - Bei Verwendung der Layoutvorschau in Android Studio wird für
FragmentContainerView
keinUnsupportedOperationException
mehr ausgegeben. (b/149707833) - Ein Problem wurde behoben, durch das beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht nach jeder Konfigurationsänderung neu erstellt und dann wieder zerstört wurden. (b/145832397)
Version 1.2.5
Version 1.2.5
10. Juni 2020
androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
und androidx.fragment:fragment-testing:1.2.5
sind veröffentlicht. Version 1.2.5 enthält diese Commits.
Fehlerkorrekturen
- Die
getViewLifecycleOwner()
des Fragments wird jetzt vor dem Aufruf vononSaveInstanceState()
beendet, was dem Verhalten des Fragment-Lebenszyklus entspricht. Diese Funktion wurde zuvor im Fragment1.3.0-alpha04
veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, ändert sich jetzt korrekt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden. Diese Funktion wurde zuvor im Fragment1.3.0-alpha04
veröffentlicht. (b/153593580)
Version 1.2.4
Version 1.2.4
1. April 2020
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
und androidx.fragment:fragment-testing:1.2.4
sind veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
- Die
FragmentLiveDataObserve
-Lint-Regel fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Ansichtslebenszyklus immer synchron sind. Daher kann beim Aufrufen vonobserve
entwederthis
oderviewLifecycleOwner
verwendet werden. (b/151765086)
Version 1.2.3
Version 1.2.3
18. März 2020
androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
und androidx.fragment:fragment-testing:1.2.3
sind veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
DialogFragment
wurde behoben, der beim Aufrufen vongetLayoutInflater()
ausonCreateDialog()
heraus einenStackOverflowError
verursacht hat. (b/117894767, aosp/1258665) - Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragment-Klassen entfernt werden können. (b/149665169)
- Falsch positive Ergebnisse im
UseRequireInsteadOfGet
-Lint-Check wurden behoben, wenn ein lokaler Variablenname verwendet wurde, der den Kotlin-Attributnamen überschattete. (b/149891163) FragmentContainerView
löst nicht mehr den FehlerUnsupportedOperationException
aus, 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,
viewLifecycleOwner
alsLifecycleOwner
für Aufrufe vonOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
undonActivityCreated()
zu verwenden. (b/142117657) - Es wurde ein neuer Lint-Check hinzugefügt, der bestätigt, dass Sie die richtige
debugImplementation
verwenden, wenn Sie dasfragment-testing
-Artefakt verwenden. (b/141500106) - Für alle Fragment-APIs, die sowohl eine
get
- als auch einerequire
-Entsprechung enthalten, wird jetzt empfohlen, die zugehörigenrequire___()
-Methoden für aussagekräftigere Fehlermeldungen anstelle voncheckNotNull(get___())
,requireNonNull(get___())
oderget___()!!
zu verwenden. (aosp/1202883)
Fehlerkorrekturen
- Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981).
- Der vorhandene Lint-Check, der die Verwendung von
viewLifecycleOwner
bei der Verwendung vonobserve
vorschlägt, wurde verbessert, um auch dielivedata-ktx
-Erweiterungsmethodenversion vonobserve
zu berücksichtigen. (b/148996309) - Die Formatierung für viele Lint-Prüfungen wurde korrigiert (aosp/1157012).
Externe Beiträge
- Vielen Dank an Zac Sweers für die
require___()
-Lint-Prüfungen im Namen von Slack. (aosp/1202883)
Version 1.2.1
Version 1.2.1
5. Februar 2020
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
und androidx.fragment:fragment-testing:1.2.1
sind veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Fragmente, die über die Methoden
add
undreplace
hinzugefügt werden und eineClass
-Instanz (oder die Kotlin-reifizierten Versionen) verwenden, behalten jetzt ihren Standardkonstruktor bei ProGuard. (b/148181315) FragmentStatePagerAdapter
undFragmentPagerAdapter
fangen keine Ausnahmen mehr ab, die vonFragmentManager
ausgelöst werden, wennfinishUpdate()
ausgeführt wird. (aosp/1208711)- Ein Problem wurde behoben, durch das
FragmentManager.findFragment()
nicht mit Fragmenten funktionierte, die über das<fragment>
-Tag hinzugefügt wurden. (b/147784323) - Für Fragmente, die mit dem Tag
<fragment>
eingefügt werden, wird jetzt immeronInflate()
voronCreate()
aufgerufen, wenn sie sich im Layout befinden. (aosp/1215856) - Das Aufrufen von
toString()
für eineFragmentManager
-Instanz löst nicht mehr die AusnahmeNullPointerException
aus, wenn die Aktivität bereits zerstört wurde. (b/148189412)
Änderungen an Abhängigkeiten
- Das Fragment
1.2.1
hängt jetzt von Lifecycle ViewModel SavedState2.2.0
ab.
Version 1.2.0
Version 1.2.0
22. Januar 2020
androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
und androidx.fragment:fragment-testing:1.2.0
sind veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- FragmentContainerView: Die
FragmentContainerView
ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Sie ersetzt die Verwendung vonFrameLayout
oder anderen Layouts. Es unterstützt auch dieselbenclass
,android:name
und optionalenandroid:tag
wie das<fragment>
-Tag, verwendet aber ein normalesFragmentTransaction
, um dieses erste Fragment hinzuzufügen, anstatt des benutzerdefinierten Codepfads, der von<fragment>
verwendet wird. onDestroyView()
-Timing: Fragmente warten jetzt auf den Abschluss von Exit-Animationen, Exit-Framework-Übergängen und Exit-AndroidX-Übergängen (bei Verwendung von Transition1.3.0
), bevoronDestroyView()
aufgerufen wird.- Klassenbasiert
add()
undreplace()
: Es wurden neue Überladungen vonadd()
undreplace()
fürFragmentTransaction
hinzugefügt, die einClass<? extends Fragment>
und optional einBundle
von Argumenten akzeptieren. Bei diesen Methoden wird IhrFragmentFactory
verwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen.fragment-ktx
wurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (d. h.fragmentTransaction.replace<YourFragment>(R.id.container)
). - Lifecycle ViewModel SavedState Integration:
SavedStateViewModelFactory
ist jetzt die Standardfactory, die verwendet wird, wennby viewModels()
,by activityViewModels()
, derViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einem Fragment verwendet wird. - Neue Lint-Prüfungen: Es wurde eine neue Lint-Prüfung hinzugefügt, die dafür sorgt, dass Sie
getViewLifecycleOwner()
verwenden, wenn SieLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
beobachten. getFragmentManager()
-Einstellung: Die MethodengetFragmentManager()
undrequireFragmentManager()
für „Fragment“ wurden eingestellt und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die das nicht leereFragmentManager
zurückgibt, dem das Fragment hinzugefügt wird. MitisAdded()
können Sie feststellen, ob es sicher ist, die Methode aufzurufen.FragmentManager.enableDebugLogging()
-Einstellung: Die statische MethodeFragmentManager.enableDebugLogging
wurde eingestellt. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
. So können Sie entwederDEBUG
- oderVERBOSE
-Logging aktivieren, ohne Ihre App neu kompilieren zu müssen.
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
in einemFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. (b/142601969) - Wenn Sie ein
NavHostFragment
mitclass
oderandroid:name
in XML mitFragmentContainerView
hinzufügen, können SiefindNavController()
nicht inonCreate()
Ihrer Aktivität verwenden. (b/142847973)
Version 1.2.0-rc05
8. Januar 2020
androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
und androidx.fragment:fragment-testing:1.2.0-rc05
sind veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.
Fehlerkorrekturen
- Ein Regressionsfehler im Fragment
1.2.0-rc04
bei Verwendung des Tags<fragment>
wurde behoben. Dadurch wurdeonViewCreated()
während der Zerstörung der Aktivität fälschlicherweise aufgerufen. (b/146290333) - Fragmente, die mit dem Tag
<fragment>
hinzugefügt werden, werden jetzt richtig gelöscht, auch wenn sie nur manchmal im Layout vorhanden sind (z.B. nur im Querformat). Daher werden diese Fragmente jetzt korrekt inCREATED
verschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden also nicht instanziiert, ohne dass Lebenszyklusmethoden durchlaufen werden. (b/145769287)
Version 1.2.0-rc04
18. Dezember 2019
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
und androidx.fragment:fragment-testing:1.2.0-rc04
sind veröffentlicht. Version 1.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die Animationen für
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
wurden angepasst, um visuelle Probleme zu vermeiden. (b/145468417)
Version 1.2.0-rc03
4. Dezember 2019
androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
und androidx.fragment:fragment-testing:1.2.0-rc03
sind veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Ein unbeabsichtigtes Verhalten wurde korrigiert, bei dem entfernte Fragmente weiterhin von
findFragmentById()
/findFragmentByTag()
zurückgegeben wurden, während ihre Übergangs- oder Beendigungsanimationen liefen. (b/143982969, aosp/1167585) - Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Fragmenten beendet, wenn die enthaltende Aktivität
onSaveInstanceState()
aufruft. (b/144380645) - Ein Problem wurde behoben, bei dem Ansichten fälschlicherweise mit
INVISIBLE
gekennzeichnet wurden, nachdem ein ausgeblendetes Fragment eingeblendet wurde. (b/70793925) - Übergänge für freigegebene Elemente in Fragmenten unterstützen jetzt Ansichten, die gedreht, skaliert usw. wurden (b/142835261).
Aktualisierungen der Dokumentation
- Die Dokumentation zur Einstellung von
setUserVisibleHint()
wurde klarer formuliert. (b/143897055) - Die Dokumentation zu
setFragmentFactory()
undgetFragmentFactory()
wurde verbessert, um besser darauf hinzuweisen, dass das Festlegen einesFragmentFactory
auch 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-rc03
und Activity1.1.0-rc03
ab.
Version 1.2.0-rc02
7. November 2019
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
und androidx.fragment:fragment-testing:1.2.0-rc02
sind veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin wird für den LintFix für die Verwendung von
getViewLifecycleOwner()
beim Beobachten vonLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
(eingeführt in Fragment1.2.0-rc01
) jetzt die Kotlin-Syntax für den EigenschaftenzugriffviewLifecycleOwner
anstelle 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
FragmentContainerView
unterstützt jetzt zusätzlich zuandroid:name
auch das Attributclass
. Damit wird die Funktionalität des<fragment>
-Tags gespiegelt. (b/142722242)- Es wurde ein neuer Lint-Check hinzugefügt, der dafür sorgt, dass Sie
getViewLifecycleOwner()
verwenden, wenn SieLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
beobachten. (b/137122478)
Fehlerkorrekturen
- Die Callbacks
onDismiss
undonCancel
fürDialogFragment
garantieren jetzt, dassDialogInterface
, das an sie übergeben wird, nicht null ist und dassgetDialog()
bei der Ausführung nicht null zurückgibt. (b/141974033) - Mit
FragmentContainerView
wird das durchclass
oderandroid:name
definierte Fragment jetzt als Teil der Inflation hinzugefügt. So wird dafür gesorgt, dassfindFragmentById()
undfindFragmentByTag()
direkt danach funktionieren. (b/142520327) - Ein
IllegalStateException
inFragmentContainerView
wurde behoben, da der Status gespeichert wurde. (b/142580713) - Ein
UnsupportedOperationException
inFragmentContainerView
wurde behoben, wenn die KlasseFragmentContainerView
verschleiert ist. (b/142657034)
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
in einemFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. Wir haben die Lint-Regel deaktiviert, die vorschlägt, zuFragmentContainerView
zu wechseln, bis das Problem überaapt2
behoben ist. (b/142601969)
Version 1.2.0-beta02
11. Oktober 2019
androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
und androidx.fragment:fragment-testing:1.2.0-beta02
sind veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das
onInflate()
eines Fragments keine korrekten Attribute vonFragmentContainerView
erhalten hat, was zu Fehlern bei Fällen wieNavHostFragment
führte. (b/142421837)
Version 1.2.0-beta01
9. Oktober 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
und androidx.fragment:fragment-testing:1.2.0-beta01
sind veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
bietet Unterstützung für das Hinzufügen eines ersten Fragments mit zusätzlicher Unterstützung für die XML-Attributeandroid:name
und optionalandroid:tag
. Im Gegensatz zum<fragment>
-Tag wird beiFragmentContainerView
ein normalesFragmentTransaction
verwendet, um das erste Fragment hinzuzufügen. Dadurch sind weitereFragmentTransaction
-Vorgänge für dasFragmentContainerView
möglich und View Binding kann für das Layout verwendet werden. (b/139830628, b/141177981)- Fragments enthält jetzt eine Lint-Warnung, die eine schnelle Korrektur zum Ersetzen von
<fragment>
durchFragmentContainerView
bietet. (b/139830056)
Fehlerkorrekturen
- Ein
ClassCastException
bei der Verwendung vonandroidx.transition
wurde behoben. (b/140680619) - Bei Verwendung von Transition
1.3.0-beta01
warten Fragmente jetzt auf den Abschluss vonandroidx.transition
-Übergängen (zusätzlich zu Framework-Übergängen und -Animationen, die in Fragment1.2.0-alpha03
bzw. Fragment1.2.0-alpha02
behoben wurden), bevoronDestroyView()
gesendet wird. (aosp/1119841) - Bei Verwendung von Transition
1.3.0-beta01
werdenandroidx.transition
-Übergänge in Fragmenten jetzt richtig abgebrochen, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841) - Es wurde ein Problem auf API 17 und niedriger behoben, das beim Verwenden von
androidx.transition
-Übergängen für die Stammansicht des Fragments bei Verwendung vonFragmentContainerView
auftrat. (b/140361893) - Das
fragment-testing
-Artefakt hängt jetzt von AndroidX Test1.2.0
ab. Dadurch wird eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben. (b/139100149) - Die Verwendung von
Log.w
in FragmentManager wurde entfernt. (aosp/1126468)
Bekannte Probleme
- Die
onInflate()
des Fragments erhalten keine korrekten Attribute vonFragmentContainerView
, was zu Problemen wieNavHostFragment
führt. (b/142421837)
Version 1.2.0-alpha04
18. September 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
und androidx.fragment:fragment-testing:1.2.0-alpha04
sind veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
getFragmentManager()
undrequireFragmentManager()
fürFragment
wurden eingestellt und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die dasFragmentManager
zurückgibt, dem das Fragment hinzugefügt wird (mitisAdded()
können Sie feststellen, ob der Aufruf sicher ist). (b/140574496) - Die statische Methode
FragmentManager.enableDebugLogging
wurde verworfen. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
. So können Sie entweder die Protokollierung vonDEBUG
oderVERBOSE
aktivieren, ohne Ihre App neu kompilieren zu müssen. (aosp/1116591)
Fehlerkorrekturen
- Fragmente werden jetzt ordnungsgemäß zerstört, während die Übergangsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
- Es wurde ein Problem behoben, bei dem in Fragmenten
Activity.findViewById()
aufgerufen wurde, obwohl das zuvor nicht der Fall war. (aosp/1116431)
Version 1.2.0-alpha03
5. September 2019
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
und androidx.fragment:fragment-testing:1.2.0-alpha03
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
FragmentContainerView
heißt jetztfinal
. (b/140133091)
Fehlerkorrekturen
FragmentContainerView
kehrt die Zeichenreihenfolge jetzt korrekt um, wenn Fragmente aus dem Backstack entfernt werden. (b/139104187)- Ein Problem wurde behoben, durch das die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment entfernt und ein neues Fragment hinzugefügt wurde. (b/111659726)
- Fragmente warten jetzt auf den Abschluss von Übergängen (zusätzlich zu Animationen, was in Fragment
1.2.0-alpha02
behoben wurde), bevoronDestroyView()
gesendet wird. (b/138741697)
Version 1.2.0-alpha02
7. August 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
und androidx.fragment:fragment-testing:11.2.0-alpha02
werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die Standardfactory, die verwendet wird, wenn Sieby viewModels()
,by activityViewModels()
, denViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einemFragment
verwenden. (b/135716331)- Die Standardanimationen bei Verwendung von
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
mitsetTransition
auf einemFragmentTransaction
wurden aktualisiert, um den Animationen zu entsprechen, die von Aktivitäten auf Android 10-Geräten verwendet werden. (aosp/1012812, aosp/1014730)
API-Änderungen
FragmentContainerView
wird als dringend empfohlener Container für dynamisch hinzugefügte Fragmente eingeführt und ersetzt die Verwendung vonFrameLayout
usw., da damit Probleme mit der Z-Reihenfolge von Animationen und dem Senden von Fenstereinblendungen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)- Es wurde eine statische
FragmentManager.findFragment(View)
-Methode hinzugefügt, mit der das enthaltende Fragment aus einer Ansicht abgerufen werden kann, die von einem Fragment eingefügt wurde. Eine Kotlin-Erweiterung ist auch infragment-ktx
verfügbar. (aosp/1090757) - Es wurden neue Überladungen von
add()
undreplace()
fürFragmentTransaction
hinzugefügt, die einClass<? extends Fragment>
und optional einBundle
von Argumenten akzeptieren. Bei diesen Methoden wird IhrFragmentFactory
verwendet, um eine Instanz des hinzuzufügenden Fragments zu erstellen.fragment-ktx
wurden auch Kotlin-Erweiterungen hinzugefügt, die reifizierte Typen verwenden (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
). (b/126124987) @MainThread
-Annotationen wurden denFragment
-Lifecycle-Callbacks hinzugefügt. (b/127272564)- Die APIs für den Brotkrümeltitel auf
FragmentTransaction
undFragmentManager.BackStackEntry
wurden eingestellt. (b/138252944) - Die Methode
setTransitionStyle
fürFragmentTransaction
wurde verworfen. (aosp/1011537) - Viele der Methoden in
FragmentManager
sind nicht mehrabstract
.FragmentManager
selbst bleibtabstract
und sollte nicht direkt instanziiert oder erweitert werden. Sie sollten weiterhin nur eine vorhandene Instanz vongetSupportFragmentManager()
,getChildFragmentManager()
usw. abrufen.
Fehlerkorrekturen
- Aus Fragment
1.1.0-rc04
: Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt wurden. (b/138251858) - Fragment
1.1.0-rc03
: Ein Problem wurde behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wennpostponeEnterTransition()
mit einem Timeout mehr als einmal aufgerufen wurde. (b/137797118) - Fragment
1.1.0-rc02
:FragmentPagerAdapter
undFragmentStatePagerAdapter
: Ein Absturz beim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Fragmente warten jetzt, bis Animationen abgeschlossen sind, bevor sie
onDestroyView()
senden. (b/136110528) - Fragmentanimationen von untergeordneten Fragmenten und ihren untergeordneten Elementen werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
- Ein
NullPointerException
wurde behoben, der beim Verwenden von Übergängen für gemeinsame Elemente und beim Kombinieren von Pop- und Add-Vorgängen aufgetreten ist. (b/120507394) - Es wurde eine Behelfslösung für
IllegalStateException
s hinzugefügt, wennFragmentPagerAdapter
undFragmentStatePagerAdapter
in Robolectric-Tests verwendet werden. (b/137201343)
Version 1.2.0-alpha01
2. Juli 2019
androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
und androidx.fragment:fragment-testing:1.2.0-alpha01
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- FragmentManager ruft jetzt
requestApplyInsets()
auf, nachdem die Ansicht des Fragments angehängt wurde und direkt vor dem Aufrufen vononViewCreated()
. So wird dafür gesorgt, dass Ihre Ansicht immer die richtigen Insets hat. (b/135945162)
Fehlerkorrekturen
- Es wurde ein
NullPointerException
behoben, der beim Einblenden einesFragmentTransaction
auftrat, für dassetPrimaryNavigationFragment()
vorreplace()
verwendet wurde. (b/134673465)
Version 1.1.0
Version 1.1.0
5. September 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
und androidx.fragment:fragment-testing:1.1.0
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 1.0.0
- fragment-testing: Das
fragment-testing
-Artefakt stellt eineFragmentScenario
-Klasse zum Testen eines Fragments in Isolation bereit. Weitere Informationen finden Sie in der Dokumentation zum Testen der Fragmente Ihrer App. - FragmentFactory: Sie können jetzt eine
FragmentFactory
für eineFragmentManager
festlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Dadurch entfällt die strenge Anforderung, einen Konstruktor ohne Argumente zu haben. - Kotlin-Eigenschaftsdelegaten für ViewModels: Das
fragment-ktx
-Artefakt enthält jetzt zwei Kotlin-Eigenschaftsdelegaten:by viewModels()
für den Zugriff auf ViewModels, die dem einzelnen Fragment zugeordnet sind, undby activityViewModels()
für den Zugriff auf ViewModels, die auf die Aktivität beschränkt sind. - Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()
für einFragmentTransaction
aufrufen. Diese ersetzt die jetzt eingestelltesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. - FragmentActivity-LayoutId-Konstruktor: Unterklassen von
FragmentActivity
können jetzt optional einen Konstruktor fürFragmentActivity
aufrufen, der eineR.layout
-ID akzeptiert. Diese gibt das Layout an, das als Inhaltssicht festgelegt werden soll. Dies ist eine Alternative zum Aufrufen vonsetContentView()
inonCreate()
. Die Anforderung, dass Ihre Unterklasse einen Konstruktor ohne Argumente haben muss, bleibt davon unberührt. - Fragment-LayoutId-Konstruktor: Unterklassen von
Fragment
können jetzt optional einen Konstruktor fürFragment
aufrufen, der eineR.layout
-ID akzeptiert. Diese gibt das Layout an, das für dieses Fragment verwendet werden soll. Das Überschreiben vononCreateView()
ist dann nicht mehr erforderlich. Das aufgeblähte Layout kann inonViewCreated()
konfiguriert werden. - Mit Zeitüberschreitung verschieben: Es wurde eine neue Überlastung von
postponeEnterTransition()
hinzugefügt, die eine Zeitüberschreitung in Anspruch nimmt.
Version 1.1.0-rc04
7. August 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
und androidx.fragment:fragment-testing:1.1.0-rc04
werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente aus dem Backstack entfernt werden. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
und androidx.fragment:fragment-testing:1.1.0-rc03
werden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das beim mehrmaligen Aufrufen von
postponeEnterTransition()
mit einem Zeitlimit vorherige Zeitlimits nicht abgebrochen wurden. (b/137797118)
Version 1.1.0-rc02
17. Juli 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
und androidx.fragment-testing:fragment:1.1.0-rc02
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Absturz in
FragmentPagerAdapter
undFragmentStatePagerAdapter
beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
Version 1.1.0-rc01
2. Juli 2019
androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
und androidx.fragment:fragment-testing:1.1.0-rc01
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn während der Übergabe
show()
- oderhide()
-Vorgänge verwendet werden. (b/133385058) - Es wurde ein
NullPointerException
behoben, der beim Einblenden einesFragmentTransaction
auftrat, für dassetPrimaryNavigationFragment()
vorreplace()
verwendet wurde. (b/134673465)
Version 1.1.0-beta01
5. Juni 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
und androidx.fragment:fragment-testing:1.1.0-beta01
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
androidx.lifecycle.Lifecycle
-Callbacks (insbesondere in Bezug aufSTARTED
,RESUMED
,PAUSED
,STOPPED
undDESTROYED
) für verschachtelte Fragmente sind jetzt richtig verschachtelt. (b/133497591)OnBackPressedCallback
-Instanzen, die imonCreate()
eines Fragments registriert sind, haben jetzt ordnungsgemäß Vorrang vor dem untergeordneten FragmentManager. (b/133175997)- Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
- Fragment-Animationen und ‑Übergänge werden jetzt ignoriert, wenn
animateLayoutChanges="true"
verwendet wird. Dadurch wird ein Problem behoben, bei dem Fragmente nicht richtig zerstört wurden. (b/116257087)
Version 1.1.0-alpha09
16. Mai 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
und androidx.fragment:fragment-testing:1.1.0-alpha09
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Fragmente erhalten jetzt einen Callback für eine neue
onPrimaryNavigationFragmentChanged(boolean)
-Methode, wenn sich das primäre Navigationsfragment ändert. aosp/960857
Fehlerkorrekturen
- Menüelemente, die von einem untergeordneten Fragment eingefügt wurden, werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013
Version 1.1.0-alpha08
7. Mai 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
und androidx.fragment:fragment-testing:1.1.0-alpha08
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diese Version ist nicht mit Preferences 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Wenn Sie diese Version von „Fragments“ verwenden, führen Sie bitte ein Upgrade auf „Preferences“ 1.1.0-alpha05 durch.
Neue Funktionen
- Es wurde eine neue Überladung von
postponeEnterTransition()
hinzugefügt, die ein Zeitlimit akzeptiert. Nach Ablauf des Zeitlimits ruft das Fragment automatischstartPostponedEnterTransition()
auf. b/120803208
API-Änderungen
- Breaking Change: Die zuvor verworfene Methode
FragmentFactory
instantiate
, die einBundle
akzeptierte, wurde entfernt. aosp/953856 - Funktionsgefährdende Änderung: Die Konstanten
RESUME_ONLY_CURRENT_FRAGMENT
undUSE_SET_USER_VISIBLE_HINT
inFragmentPagerAdapter
undFragmentStatePagerAdapter
wurden inBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
bzw.BEHAVIOR_SET_USER_VISIBLE_HINT
umbenannt. aosp/954782
Fehlerkorrekturen
- Fragmente, deren Lebenszyklus über
setMaxLifecycle()
begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Status erreichen. b/131557151 - Bei Verwendung von
setMaxLifecycle(Lifecycle.State.CREATED)
wird die Ansicht von Fragmenten ordnungsgemäß zerstört. aosp/954180
Version 1.1.0-alpha07
25. April 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
und androidx.fragment:fragment-testing:1.1.0-alpha07
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()
für einFragmentTransaction
aufrufen. Diese ersetzt die jetzt eingestelltesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)
API-Änderungen
moveToState(STARTED)
aufFragmentScenario
kann jetzt nur noch auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)
Geändertes Verhalten
- Aufgrund von b/129907905 erhalten Fragmente im Backstack keinen Callback für
onCreateView()
, wenn die Hosting-Aktivität neu erstellt wird.onCreateView()
wird jetzt nur noch aufgerufen, wenn das Fragment sichtbar wird (d.h. wenn der Backstack entfernt wird).
Fehlerkorrekturen
- Es wurde ein Problem behoben, das beim Verwenden eines
<fragment>
-Tags in XML und descontentLayoutId
-Konstruktors vonFragmentActivity
oderAppCompatActivity
auftrat. (b/129907905) - Ein Problem wurde behoben, bei dem Fragmente im Backstack nach einer Konfigurationsänderung nicht mindestens in den Status
CREATED
verschoben wurden. Dadurch wurden ViewModels und untergeordnete beibehaltene Fragmente nicht richtig verworfen. (b/129593351) - Ein Absturz in
restoreSaveState
wurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824) - Es wurden Probleme behoben, bei denen ein mit einem Fragment-Lebenszyklus hinzugefügtes
OnBackPressedCallback
nicht aufgerufen wurde, wenn dasFragmentManager
einen Backstack hatte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209) - Für Animationen wird in Fragmenten nicht mehr
LAYER_TYPE_HARDWARE
erzwungen. Wenn Sie eine Animation für die Hardwareebene benötigen, müssen Sie sie in Ihre Animation einfügen. (b/129486478)
Version 1.1.0-alpha06
3. April 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
und androidx.fragment:fragment-testing:1.1.0-alpha06
sind veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Ausnahmen, die von FragmentManager ausgelöst werden, enthalten jetzt den Namen des Fragments in der Meldung. (b/67759402)
API-Änderungen
Fragment
undFragmentActivity
enthalten jetzt einen zweiten Konstruktor, der ein@LayoutRes int
akzeptiert. Damit wird das bisherige Verhalten ersetzt, bei dem Ihre Klasse mit@ContentView
annotiert wurde. Dieses Vorgehen funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)- Die
onActivityResult()
von FragmentActivity ist jetzt korrekt als@CallSuper
markiert. (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@StyleRes
annotiert. (aosp/924193)FragmentTabHost
wurde eingestellt. (b/127971835)- Die
getThemedContext()
von FragmentActivity wurde entfernt. (aosp/934078)
Fehlerkorrekturen
- Ein Regressionsproblem in Version 1.1.0-alpha05 wurde behoben, das dazu führte, dass das eingehende Fragment auf dem Bildschirm blinkte. (b/129405432)
- Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von popBackStack- und replace-Vorgängen verloren ging. (b/124332597)
- Es wurde ein Problem behoben, das beim Wiederherstellen des Fragmentstatus bei der Verwendung von
@ContentView
-Konstruktoren in der Aktivität aufgetreten ist. (b/127313094) - Die Logik von
setTargetFragment()
wurde korrigiert, wenn ein vorhandenes Zielfragment durch ein Fragment ersetzt wird, das noch nicht an den FragmentManager angehängt ist. (aosp/932156)
Version 1.1.0-alpha05
13. März 2019
androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
und androidx.fragment:fragment-testing:1.1.0-alpha05
sind veröffentlicht. Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
@ContentView
-Anmerkungssuchen werden jetzt im Cache gespeichert (b/123709449).
Geändertes Verhalten
- Wenn Sie
remove()
,hide()
,show()
,detach()
undsetPrimaryNavigationFragment()
mit einem Fragment aufrufen, das an einen anderen FragmentManager angehängt ist, wird jetzt eineIllegalStateException
ausgelöst, anstatt dass der Vorgang ohne Fehlermeldung fehlschlägt (aosp/904301).
Fehlerkorrekturen
onNewIntent
fürFragmentActivity
ist jetzt korrekt mit@CallSuper
gekennzeichnet (b/124120586)- Ein Problem wurde behoben, bei dem die
onDismiss()
vonDialogFragment
bei Verwendung vongetDialog().dismiss()
odergetDialog().cancel()
zweimal aufgerufen werden konnte (b/126563750).
Version 1.1.0-alpha04
7. Februar 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
und androidx.fragment:fragment-testing 1.1.0-alpha04
sind veröffentlicht.
Neue Funktionen
- Es wurde Unterstützung für die Klassenannotation
@ContentView
hinzugefü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-testing
hängt jetzt vonandroidx.test:core-ktx
1.1.0 (stabil) ab (b/121209673).- Sie können jetzt
openActionBarOverflowOrOptionsMenu
mitFragmentScenario
verwenden, um Optionsmenüs zu testen, die in Fragmenten gehostet werden (b/121126668).
API-Änderungen
- Die Methode
requireArguments()
wurde hinzugefügt, die ein@NonNull Bundle
zurückgibt oder einIllegalStateException
auslöst (b/121196360). - Es wurde ein Hinweis hinzugefügt, dass
getLifecycle()
,getViewLifecycleOwner()
undgetViewLifecycleOwnerLiveData()
nicht überschrieben werden sollten und in einem zukünftigen Release endgültig werden. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880714) - Es wurde ein Hinweis hinzugefügt, dass
getViewModelStore()
nicht überschrieben werden sollte und in einem zukünftigen Release endgültig festgelegt wird. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880713) - Ein Problem mit der binären Kompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)
Fehlerkorrekturen
- Ziel-Fragmente werden korrekt gelöscht, wenn Sie
null
ansetTargetFragment()
übergeben. (aosp/849969) - Ein Problem wurde behoben, durch das Ziel-Fragments in oder nach
onDestroy()
manchmal nicht verfügbar waren. (b/122312935) - Die onDismiss()-Methode von DialogFragment wird jetzt vor
onDestroy()
aufgerufen. (aosp/874133) (aosp/890734)
Version 1.1.0-alpha03
17. Dezember 2018
Neue Funktionen
- Das Fragment implementiert jetzt
BundleSavedStateRegistryOwner
und hängt von der neu veröffentlichten SavedState-Bibliothek ab [aosp/824380]. - Es wurde ein
by activityViewModels
-Kotlin-Property-Delegate hinzugefügt, um ViewModels abzurufen, die mit der enthaltenden Aktivität verknüpft sind [b/119050253] - Der
by viewModels
-Kotlin-Property-Delegate wurde erweitert, um eine optionale Lambda-Methode zum Abrufen vonViewModelStoreOwner
zu verwenden. So können Sie das übergeordnete Fragment oder ein anderes benutzerdefiniertesViewModelStoreOwner
mit Code wieval viewModel: MyViewModel by viewModels(::requireParentFragment)
übergeben. [b/119050253]
API-Änderungen
- Mit
FragmentScenario
können Sie jetzt ein Design wieTheme.AppCompat
angeben [b/119054431]. Dies ist eine funktionsgefährdende Änderung. - Die Methode
requireView()
wurde hinzugefügt, die eine@NonNull View
zurückgibt oder eineIllegalStateException
auslöst. [b/120241368] - Die Methode
requireParentFragment()
wurde hinzugefügt. Sie gibt ein@NonNull Fragment
zurück oder löst eineIllegalStateException
aus. [b/112103783]
Fehlerkorrekturen
- Fehler „IllegalStateException: Failure saving state“ behoben b/120814739
- Fragmente, die aus dem gespeicherten Instanzstatus wiederhergestellt werden, erhalten jetzt immer einen nicht leeren
Bundle
[b/119794496] - Entfernte Fragmente verwenden ihr
Lifecycle
-Objekt nicht mehr, wenn sie wieder hinzugefügt werden [b/118880674]
Version 1.1.0-alpha02
3. Dezember 2018
Neue Funktionen
- Mit den Kotlin-Erweiterungen von „FragmentScenario“ können Sie jetzt ein Lambda für die Fragmentkonstruktion verwenden, anstatt eine
FragmentFactory
-Instanz zu übergeben. (aosp/812913)
Fehlerkorrekturen
- Es wurde eine IllegalStateException behoben, die bei Verwendung verschachtelter Fragmente im Backstack auftrat (b/119256498).
- Absturz bei Verwendung von
FragmentScenario.recreate()
mit einemFragmentFactory
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
FragmentFactory
für jedesFragmentManager
festlegen, um zu steuern, wie neue Fragmentinstanzen instanziiert werden. - Es wurde ein neuer
by viewModels()
-Kotlin-Property-Delegate zum Abrufen von ViewModels aus einem Fragment hinzugefügt. - Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt in der
onStop()
eines Fragments abgebrochen.
API-Änderungen
- Die Nullable-Annotationen wurden in der gesamten Fragment-API deutlich erweitert.
Fehlerkorrekturen
- Ein Problem wurde behoben, das dazu führte, dass Fragmentvorgänge in LiveData fehlschlugen. (b/77944637)
Bekannte Probleme
- Auf Target-Fragmente kann nicht mehr zugegriffen werden, nachdem ein Fragment aus dem FragmentManager entfernt wurde.
fragment-testing
ist abhängig vonandroidx.test:core:1.0.0-beta01
statt von der korrektenandroidx.test:core:1.0.0
.