Fragment
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
17. April 2024 | 1.6.2 | 1.7.0-rc02 | − | 1.8.0-alpha02 |
Abhängigkeiten deklarieren
Zum Hinzufügen einer Abhängigkeit von Fragment 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 Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovig
dependencies { def fragment_version = "1.6.2" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.6.2" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie 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 eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.8
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02
wird freigegeben. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.7.0-rc02
: Es wurden Protokolle hinzugefügt, die angeben, warum das Festlegen einessharedElement
ohne weitere Übergänge nicht ausgeführt werden kann. (Iec48e) - Aus Fragment
1.7.0-rc02
: Es wurde ein Fehler behoben, bei dem ein Absturz aufgetreten ist, wenn ein nicht suchbares freigegebenes Element einer Transaktion hinzugefügt wurde, bei der alle anderen Übergänge suchbar waren. Jetzt gilt die Transaktion korrekt als nicht suchbar. (I18ccd)
Version 1.8.0-alpha01
3. April 2024
androidx.fragment:fragment-*:1.8.0-alpha01
wird freigegeben. Version 1.8.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit dem neuen
AndroidFragment
Composable
können Sie der Hierarchie „Compose“ über den Namen der Fragmentklasse Fragmente hinzufügen. Es übernimmt automatisch das Speichern und Wiederherstellen des Status des Fragments. Dies kann als direkter Ersatz für die AndroidViewBinding-Composable
verwendet werden (b/312895363, Icf841).
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener
APIs wurde aktualisiert, um anzugeben, wann sie aufgerufen werden und wie sie verwendet werden sollen. (I0bfd9)
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7
Version 1.7.0-rc02
17. April 2024
androidx.fragment:fragment-*:1.7.0-rc02
wird freigegeben. Version 1.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Logs hinzugefügt, die angeben, warum das Festlegen eines
sharedElement
ohne weitere Umstellungen nicht ausgeführt werden kann. (Iec48e) - Es wurde ein Fehler behoben, bei dem ein Absturz aufgetreten ist, wenn ein nicht suchbares gemeinsames Element zu Transaktionen hinzugefügt wurde, bei denen alle anderen Übergänge suchbar waren. Jetzt gilt die Transaktion korrekt als nicht suchbar. (I18ccd)
Version 1.7.0-rc01
3. April 2024
androidx.fragment:fragment-*:1.7.0-rc01
wird freigegeben. 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 freigegeben. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallback
wird jetzt in Kotlin geschrieben, sodass die Null-Zulässigkeit des generischen Hosttyps mit der Null-Zulässigkeit des Rückgabetyps vononGetHost()
übereinstimmt. (I40af5)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein Fragment nie gelöscht wurde, wenn eine Geste mit der Option „Zurück“ mit Commit für ein Fragment, das sich nicht in einem Container befindet, nie gelöscht wurde. Das Fragment wird jetzt sofort in den endgültigen Zustand verschoben. (Ida0d9)
- Ein Problem in Fragmenten wurde behoben, bei dem eingehende Übergänge durch eine vorausschauende Zurück-Geste die Einstiegsansicht zerstören und einen leeren Bildschirm blieben. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7. Februar 2024
androidx.fragment:fragment-*:1.7.0-alpha10
wird freigegeben. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben, bei dem Fragmente bei Verwendung der Predictive Back-Unterstützung für
Animator
oder AndroidX-Übergang einNullPointerException
vonhandleOnBackProgressed
ausgegeben haben, wenn keinFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. (I7c835)
Version 1.7.0-alpha09
24. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha09
wird freigegeben. Version 1.7.0-alpha09 enthält diese Commits.
Artefakt zum Erstellen von Fragmenten
Ein neues fragment-compose
-Artefakt wurde erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig Compose-basierten Architektur wechseln.
Die erste in diesem neuen Artefakt verfügbare Funktion ist eine content
-Erweiterungsmethode für Fragment
, die die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen soll. Dazu wird eine ComposeView
für Sie erstellt und die richtige ViewCompositionStrategy
festgelegt. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Neue Funktionen
FragmentManager.OnBackStackChangedListener()
stellt jetzt dieonBackStackChangeProgressed()
und dieonBackStackChangeCancelled()
für den Empfang vorausgesagter Fortschrittsereignisse bzw. abgebrochene Ereignisse bereit. 214b87
Bekanntes Problem
- Wenn Fragment die Unterstützung für den prädiktiven Back-up für
Animator
oder AndroidX Transition verwendet, gibt Fragmente einNullPointerException
vonhandleOnBackProgressed
aus, wenn noch nieFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. Sie können den Absturz umgehen, indem Sie einen Listener manuell hinzufügen. Eine Lösung wird in der nächsten Version von Fragmente behoben werden.
Version 1.7.0-alpha08
10. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha08
wird freigegeben. Version 1.7.0-alpha08 enthält diese Commits.
Aufräumen
- Die Problemumgehung für die Übergangsbibliothek wurde entfernt, die in Umstellung
1.5.0-alpha06
behoben wurde. (I04356)
Version 1.7.0-alpha07
29. November 2023
androidx.fragment:fragment-*:1.7.0-alpha07
wird freigegeben. Version 1.7.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ein
NullPointerException
wurde behoben, das dadurch verursacht wurde, dass ein Übergang für ein gemeinsames Element festgelegt wurde, bei dem auch keine Eingabe/ExitTransition festgelegt wurde. (I8472b) - Aus Fragment
1.6.2
: Wenn das Fragment einesFragmentContainerView
aufgebläht wird, sind jetzt dessen Status wieFragmentManager
, Host und ID imonInflate
-Callback zugänglich. (I1e44c, b/307427423) - Aus Fragment
1.6.2
: Wenn du mitclearBackStack
einen Satz von Fragmenten entfernst, werden jetzt dieViewModel
des verschachtelten Fragments gelöscht, sobald dieViewModels
des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)
Version 1.7.0-alpha06
4. Oktober 2023
androidx.fragment:fragment-*:1.7.0-alpha06
wird freigegeben. Version 1.7.0-alpha06 enthält diese Commits.
Abhängigkeitsaktualisierung
- Fragmente wurden aktualisiert und hängen jetzt von der neuen
animateToStart
API ab, die in Umstellung1.5.0-alpha04
hinzugefügt wurde.
Version 1.7.0-alpha05
20. September 2023
androidx.fragment:fragment-*:1.7.0-alpha05
wird freigegeben. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragmente bieten jetzt Unterstützung für die Predictive-Zurück-Funktion, wenn Androidx-Übergänge verwendet werden. So können Sie die Zurück-Geste verwenden, um mit Ihrer benutzerdefinierten Androidx-Übergang zum vorherigen Fragment zu springen, bevor Sie sich entscheiden, ob Sie die Transaktion mit der abgeschlossenen Geste entweder per Commit durchführen oder abbrechen möchten. Zum Aktivieren dieser Funktion ist die
1.5.0-alpha03
-Version erforderlich. (Ib49b4, b/285175724)
Bekannte Probleme
- Es gibt derzeit ein Problem, bei dem der Übergang nicht ausgeführt wird, nachdem Sie eine Zurück-Touch-Geste mit einem Übergang einmal abgebrochen haben und der Wechsel beim nächsten Start nicht ausgeführt wird. Dies führt zu einem leeren Bildschirm. Ursache könnte ein Problem in der Transition-Bibliothek sein. (b/300157785) Wenn dieses Problem auftritt, melden Sie ein Problem mit Fragment und verwenden Sie dabei ein Beispielprojekt, das das Problem reproduziert. Du kannst die automatische Vervollständigung deaktivieren, indem du in den
onCreate()
deiner AktivitätenFragmentManager.enabledPredictiveBack(false)
verwendest.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04
wird freigegeben. Version 1.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem eine vorausschauende Zurück-Geste abgebrochen wurde, bei dem Fragmente nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
- Es wurden Regressionen behoben, bei denen Animationen mit Übergängen ausgeführt werden durften. (I59f36)
- Bei der Verwendung von Predictive Back mit Fragmenten wurde ein Problem behoben, bei dem der Versuch, zweimal schnell hintereinander auf das vorletzte Fragment auf dem Back-Stack zurückzukehren, einen Absturz verursachte. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03
wird freigegeben. Version 1.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der vorausschauenden „Zurück“-Funktion dazu führte, dass das erste Fragment im Back-Stack des Fragmentmanagers übersprungen wurde und die Aktivität beendet wurde, wenn das System über die Bedienung über 3 Schaltflächen oder die vorausschauende „Zurück“-Touch-Geste beendet wurde. (I0664b, b/295231788)
Version 1.7.0-alpha02
9. August 2023
androidx.fragment:fragment-*:1.7.0-alpha02
wird freigegeben. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie Fragmente mit prädiktiven Rückgesten von API 34 verwenden und ein Übergangssystem verwenden, das die Suche (
Animations
,Transitions
) oder überhaupt keine Übergänge unterstützt, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Aktion „Zurück“ ausgeführt wird. (I8100c)
Version 1.7.0-alpha01
7. Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01
wird freigegeben. Diese Version wird in einem internen Zweig entwickelt.
Neue Funktionen
- Fragmente bieten jetzt Unterstützung für In-App-Vorhersagen, wenn
Animator
verwendet wird. So kannst du die Zurück-Geste verwenden, um das vorherige Fragment mit deinem benutzerdefinierten Animator zu sehen, bevor du dich entscheidest, die Transaktion entweder mit der abgeschlossenen Geste per Commit durchzuführen oder abzubrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie das experimentelleenablePredictiveBack()
verwenden undfalse
übergeben.
Version 1.6
Version 1.6.2
1. November 2023
androidx.fragment:fragment-*:1.6.2
wird freigegeben. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment eines
FragmentContainerView
aufgebläht ist, sind jetzt seine Status wieFragmentManager
, Host und ID imonInflate
-Callback zugänglich. (I1e44c, b/307427423) - Wenn Sie
clearBackStack
verwenden, um einen Satz von Fragmenten zu entfernen, werden jetzt dieViewModel
eines verschachtelten Fragments gelöscht, sobald dieViewModels
des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)
Version 1.6.1
26. Juli 2023
androidx.fragment:fragment-*:1.6.1
wird freigegeben. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der gespeicherte Status, der beim Beenden der Aktivität gespeichert, aber nicht gelöscht wurde, fälschlicherweise im Cache gespeichert wurde, selbst nachdem die Fragmentinstanz zurück in den Status
RESUMED
verschoben wurde. Dies würde dazu führen, dass der im Cache gespeicherte Status wiederverwendet wird, wenn sich die Fragmentinstanz auf dem Back-Stack befindet, wenn das Fragment über die Multiple Back Stacks API gespeichert und wiederhergestellt wurde. (I71288, b/246289075)
Abhängigkeitsaktualisierung
- Das Fragment hängt jetzt von Activity 1.7.2 ab. Damit wird ein Problem behoben, bei dem Kotlin-Nutzer
ComponentDialog
nicht ohne eine explizite Abhängigkeit von Aktivität erweitern konnten. (b/287509323)
Version 1.6.0
7. Juni 2023
androidx.fragment:fragment-*:1.6.0
wird freigegeben. 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 jetzt immer in einemBundle
gespeichert wird. Dadurch kann genau ermittelt werden, woher der Status eines Fragments stammt. - Die
FragmentManager.OnBackStackChangedListener
-Schnittstelle wurde um zwei zusätzliche Callbacks füronBackStackChangeStarted
undonBackStackChangeCommitted
erweitert, die mit jedemFragment
aufgerufen werden, bevor sie dem Back-Stack des Fragments hinzugefügt oder daraus entfernt werden, bzw. direkt nach dem Commit der Transaktion. FragmentStrictMode
hat ein neuesWrongNestedHierarchyViolation
hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Fragments verschachtelt, aber nicht zurchildFragmentManager
des übergeordneten Fragments hinzugefügt wird.- Die
Fragment
- undFragmentManager
-APIs, die einIntent
- oderIntentSender
-Objekt verwenden, sind jetzt ordnungsgemäß mit@NonNull
annotiert, um die Übergabe eines Nullwerts als Nullwert zu verhindern, die immer sofort die jeweiligen Android-Framework-APIs abstürzen, an die diese Methoden aufrufen. DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendeComponentDialog
.- Das Fragment hängt jetzt vom Lebenszyklus
2.6.1
ab. - Das Fragment hängt jetzt von SavedState
1.2.1
ab. - Das Fragment hängt jetzt von ProfileInstaller
1.3.0
ab. Das Artefakt
fragment-testing-manifest
trennt die Manifesteinträge von den restlichen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund einer Versionsabweichung zwischen
fragment-testing
undandroidx.test
vermieden
Version 1.6.0-rc01
10. Mai 2023
androidx.fragment:fragment-*:1.6.0-rc01
wird freigegeben. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
ActivityResult
s mit dem falschen Anfragecode gesendet wurden, wenn mehrerestartActivityForResult
-Anfragen hintereinander gestellt wurden. (If0b9d, b/249519359) - Es wurde ein Problem behoben, bei dem
onBackStackChangeListener
-Callbacks für Transaktionen gesendet wurden, die den Back-Stack nicht geändert hatten, wenn sie mit Transaktionen gemischt wurden, die dies auch tun. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19. April 2023
androidx.fragment:fragment-*:1.6.0-beta01
wird freigegeben. Version 1.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransition
mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzt wird, führt dies nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110) - Die neuen Callbacks
onBackStackChangeStarted
undonBackStackChangeCommitted
senden ein Fragment jetzt nur einmal, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)
Version 1.6.0-alpha09
5. April 2023
androidx.fragment:fragment-*:1.6.0-alpha09
wird freigegeben. 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 des Fragments
commitNow()
,executePendingTransactions()
undpopBackStackImmediate()
wurden mit@MainThread
annotiert. Das bedeutet, dass jetzt alle Build-Fehler ausgeben, wenn sie nicht aus dem Hauptthread aufgerufen werden, anstatt auf einen Fehler während der Laufzeit zu warten. (Ic9665, b/236538905)
Fehlerkorrekturen
- Es wurde ein Fehler in
FragmentManager
behoben, bei dem das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668) OnBackStackChangedListener
-onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks werden jetzt nur ausgeführt, wenn derFragmentManager
-Back-Stack geändert wird. (I66055, b/274788957)
Version 1.6.0-alpha08
22. März 2023
androidx.fragment:fragment-*:1.6.0-alpha08
wird freigegeben. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Das Timing des
OnBackStackChangedListener.onBackStackChangeCommited
-Callbacks wurde so angepasst, dass es vor der Ausführung von Fragmentvorgängen ausgeführt wird. Dadurch wird sichergestellt, dass an den Callback niemals ein getrenntes Fragment übergeben wird. (I66a76, b/273568280)
Fehlerkorrekturen
- Aus Fragment
1.5.6
: Ein Problem wurde behoben, bei dem das Aufrufen vonclearFragmentResultListener
in einemsetFragmentResultListener
nicht funktioniert hat, wennLifecycle
bereitsSTARTED
war und bereits ein Ergebnis verfügbar war. (If7458)
Aktualisierungen von Abhängigkeiten
- Das Fragment hängt jetzt vom Lebenszyklus
2.6.1
ab. (586fe7) - Das Fragment hängt jetzt von SavedState
1.2.1
ab. (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 freigegeben. Version 1.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.5.6
: Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob Menüelemente hinzugefügt wurden, das Menü der Aktivität ungültig machte. (50f098, b/244336571)
Version 1.6.0-alpha06
22. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha06
wird freigegeben. Version 1.6.0-alpha06 enthält diese Commits.
Verhaltensänderung
- Der neue
onBackStackChangedStarted
-Callback auf demonBackStackChangedListener
vonFragmentManager
wird jetzt ausgeführt, bevor Fragmente in ihre Zielzustände verschoben werden. (I34726)
Version 1.6.0-alpha05
8. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha05
wird freigegeben. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener
-Schnittstelle bietet jetzt zwei zusätzliche Callbacks,onBackStackChangeStarted
undonBackStackChangeCommitted
, die zusätzliche Informationen ermöglichen und steuern, wann Back-Stack-Änderungen inFragmentManager
erfolgen. (Ib7ce5, b/238686802)
API-Änderungen
- Die
Fragment
- undFragmentManager
-APIs, die einIntent
- oderIntentSender
-Objekt verwenden, sind jetzt ordnungsgemäß mit@NonNull
annotiert, um die Übergabe eines Nullwerts als Nullwert zu verhindern, die immer sofort die entsprechenden Android-Framework-APIs abstürzen, bei denen diese Methoden aufrufen. (I06fd4)
Version 1.6.0-alpha04
7. Dezember 2022
androidx.fragment:fragment-*:1.6.0-alpha04
wird freigegeben. 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 Ansichtshierarchie des übergeordneten Fragments verschachtelt, aber nicht zurchildFragmentManager
des übergeordneten Fragments hinzugefügt wird. (I72521, b/249299268)
Änderungen des Verhaltens
- Fragmente stellen jetzt ihren
SavedStateRegistry
-Status voronAttach()
wieder her, damit sie in allen Lebenszyklusmethoden verfügbar sind. (I1e2b1)
API-Änderungen
- Das Artefakt
fragment-testing-manifest
trennt die Manifesteinträge von den restlichen Fragmenttestkomponenten. Das bedeutet, dass Sie Folgendes tun können:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing
und androidx.test
vermieden.(I8e534, b/128612536)
Fehlerkorrekturen
- Ab Fragment
1.5.5
: Fragmente speichern den StatusViewModel
nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung. (I10d2b, b/253546214)
Version 1.6.0-alpha03
5. Oktober 2022
androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
und androidx.fragment:fragment-testing:1.6.0-alpha03
wurden veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Klassen, die
DialogFragment
erweitern, müssen jetzt Super in ihrenonDismiss()
-Überschreibungen aufrufen. (I14798, b/238928865)
Fehlerkorrekturen
- Regressionen behoben, die durch die Integration der neuen Callback-Schnittstellen des Anbieters (
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
wurden veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.5.2
: Ein Problem wurde behoben, bei dem die gleichzeitige Ausführung einerpopBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass beendete Fragmente die falschenAnimation
/Animator
ausgeführt haben. (Ib1c07, b/214835303)
Version 1.6.0-alpha01
27. Juli 2022
androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
und androidx.fragment:fragment-testing:1.6.0-alpha01
wurden veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Änderungen des Verhaltens
- 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 jetzt immer in einemBundle
gespeichert wird. Dadurch kann genau ermittelt werden, woher der Status eines Fragments stammt. (b/207158202)
Fehlerkorrekturen
- Aus Fragment
1.5.1
: Korrigiere eine Regression inDialogFragmentCallbacksDetector
, bei der die Verwendung der Lint-Version mit AGP 7.4 zum Absturz von Lint führen würde. (b/237567009)
Abhängigkeitsupdate
- Aus Fragment
1.5.1
: Die Fragmentbibliothek hängt jetzt vom Lebenszyklus2.5.1
ab. (Id204c) - Aus Fragment
1.5.1
: Die Fragmentbibliothek hängt jetzt von der Aktivität1.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
wurden veröffentlicht. Version 1.5.7 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransition
mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzt wird, führt dies nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)
Version 1.5.6
22. März 2023
androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
und androidx.fragment:fragment-testing:1.5.6
wurden veröffentlicht. Version 1.5.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob Menüelemente hinzugefügt wurden, das Menü der Aktivität ungültig machte. (50f098, b/244336571)
- Es wurde ein Problem behoben, bei dem
clearFragmentResultListener
in einersetFragmentResultListener
nicht aufgerufen werden konnte, wenn dieLifecycle
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
wurden veröffentlicht. Version 1.5.5 enthält diese Commits.
Fehlerkorrekturen
- Fragmente speichern den Status
ViewModel
nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
und androidx.fragment:fragment-testing:1.5.4
wurden veröffentlicht. Version 1.5.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem bei Verwendung einer benutzerdefinierten
FragmentController
mit einem Host, der keine Callback-Schnittstelle des Anbieters (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) implementiert und dessen eingestellte Weiterleitungsfunktion aufgerufen wird, nicht an untergeordnete Fragmente weitergeleitet 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
wurden veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Back-Stack
onMultiWindowModeChanged()
-,onPictureInPictureModeChanged()
-,onLowMemory()
- undonConfigurationChanged()
-Callbacks erhielten. (I34581, I8dfe6, b/242570955) - Verschachtelte untergeordnete Fragmente erhalten keine mehrfachen
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
wurden 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 beendete Fragmente die falschenAnimation
/Animator
ausgeführt haben. (Ib1c07, b/214835303)
Version 1.5.1
27. Juli 2022
androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
und androidx.fragment:fragment-testing:1.5.1
wurden veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung einer Regression im
DialogFragmentCallbacksDetector
, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führen würde. (b/237567009)
Abhängigkeitsupdate
- Die Fragmentbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Id204c) - Die Fragmentbibliothek hängt jetzt von der Aktivität
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
wurden veröffentlicht. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- CreationExtras-Integration:
Fragment
bietet jetzt die Möglichkeit, eine zustandsloseViewModelProvider.Factory
über dieCreationExtras
des Lebenszyklus2.5.0
bereitzustellen. - Integration des Komponentendialogs:
DialogFragment
verwendet jetztComponentDialog
über die Aktivität1.5.0
als vononCreateDialog()
zurückgegebenes Standarddialogfeld. - Refaktorierung des gespeicherten Instanzstatus: Die Art und Weise, wie die Fragmente ihren Instanzstatus speichern, wurden geändert. So lässt sich eindeutig feststellen, welcher Status im Fragment gespeichert wurde und aus welcher Quelle der Status stammt. Zu den aktuellen Änderungen gehören:
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einemBundle
statt direkt in einem benutzerdefiniertenParcelable
.- Noch nicht übermittelte Ergebnisse, die über die
Fragment Result APIs
festgelegt wurden, werden jetzt getrennt vom internen Status vonFragmentManager
gespeichert. - Der jedem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status des
FragmentManager
gespeichert. So können Sie die Menge des mit einem einzelnen Fragment verknüpften gespeicherten Status mit den eindeutigen IDs korrelieren, die im Debug-Logging vonFragment
vorhanden sind.
Weitere Änderungen
FragmentStrictMode
bietet jetzt die Möglichkeit, dass private Drittanbieter-Fragmente bestimmte Strafen für Verstöße umgehen, indemallowViolation()
mit dem Klassennamen verwendet wird.- Die Fragment APIs zum Bereitstellen eines Menüs für die
ActionBar
Ihrer Aktivität wurden eingestellt. Die in Aktivität1.4.0
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste, gleichwertige 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
wurden veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Refaktorierung gespeicherter Instanzstatus
- Der jedem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status des
FragmentManager
gespeichert. So können Sie die Menge des mit einem einzelnen Fragment verknüpften gespeicherten Status mit den eindeutigen IDs korrelieren, die im Debug-Logging für Fragmente vorhanden sind. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
und androidx.fragment:fragment-testing:1.5.0-beta01
wurden veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragment
hat eine neuedismissNow
-Methode hinzugefügt, diecommitNow
für Parität mit dershowNow
-Funktion verwendet. Beachte, dass dieDialog
dadurch nicht sofort geschlossen wird, sondern nur der Status vonFragmentManager
synchron aktualisiert wird. (I15c36, b/72644830)
Refaktorierung gespeicherter Instanzstatus
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einemBundle
statt direkt in einem benutzerdefiniertenParcelable
. Dies ist der erste Schritt, um zusätzliche Transparenz zu bieten, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)- Noch nicht übermittelte Ergebnisse, die über die Fragment Result APIs festgelegt wurden, werden jetzt getrennt vom internen Status von
FragmentManager
gespeichert. So erhalten Sie einen besseren Überblick darüber, welche Ergebnisse als Teil des Status der gespeicherten Instanz gespeichert werden. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6. April 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
und androidx.fragment:fragment-testing:1.5.0-alpha05
wurden veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.
API-Änderungen
setHasOptionsMenu()
vonFragment
wurde eingestellt. Zur Verwaltung von Menüs und den zugehörigen Menüelementen sollten stattdessen die neuen Menü-APIs gemäß den Versionshinweisen für Fragment1.5.0-alpha04
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
wurden veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Fragment APIs zum Bereitstellen eines Menüs für das
ActionBar
deiner Aktivität wurden eingestellt, da sie dein Fragment eng mit deiner Aktivität verknüpfen und nicht isoliert getestet werden können. Die in Aktivität1.4.0-alpha01
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste, gleichwertige 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
wurden 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)
Änderungen des Verhaltens
DialogFragment
verwendet jetztComponentDialog
als Standarddialogfeld, das 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
wurden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
bietet jetzt die Möglichkeit, dass private Drittanbieter-Fragmente bestimmte Strafen für Verstöße 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
wurden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragment
ist jetzt in ViewModel CreationExtras eingebunden, die im Rahmen des Lebenszyklus2.5.0-alpha01
eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Aus Fragment
1.4.1
:FragmentContainerView
löst keine illegale Statusausnahme aus, wenn von XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Aus Fragment
1.4.1
: Bei Verwendung einer benutzerdefinierten Lambda-FunktionownerProducer
mit der Lazy-Funktionby viewModels()
wird jetzt derdefaultViewModelProviderFactory
dieses Eigentümers verwendet, wenn kein benutzerdefinierterViewModelProvider.Factory
-Wert angegeben ist, anstatt immer die Factory des Fragments zu verwenden. (I56170, b/214106513) - Ein Absturz wurde behoben, der beim ersten Zugriff auf ein
ViewModel
über einenregisterForActivityResult()
-Callback einesFragment
aufgetreten ist. (Iea2b3)
Version 1.4
Version 1.4.1
26. Januar 2022
androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
und androidx.fragment:fragment-testing:1.4.1
wurden veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
FragmentContainerView
löst keine unzulässigen Statusausnahmen mehr aus, wenn von XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)- Bei Verwendung einer benutzerdefinierten Lambda-Funktion
ownerProducer
mit der Lazy-Funktionby viewModels()
wird jetzt derdefaultViewModelProviderFactory
von diesem Eigentümer verwendet, wenn keine benutzerdefinierteViewModelProvider.Factory
angegeben ist, anstatt immer die Fabrik des Fragments zu verwenden. (I56170, b/214106513)
Version 1.4.0
17. November 2021
androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
und androidx.fragment:fragment-testing:1.4.0
wurden veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Die
FragmentStrictMode
APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre von Ihnen abhängigen Anwendungen oder Bibliotheken keine eingestellten Fragment APIs aufrufen. Wenn ein Verstoß erkannt wird, kannst du eine Lognachricht ausgeben, deinen eigenen benutzerdefinierten Listener auslösen oder deine App abstürzen. DieFragmentStrictMode.Policy
, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann mit der neuen MethodesetStrictModePolicy()
für eineFragmentManager
festgelegt werden. Diese Richtlinie gilt für dieFragmentManager
und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Siehe StrictMode für Fragmente. FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das zuletzt dem Container hinzugefügte Fragment zurückgibt. Dabei wird dieselbe Logik wie beifindFragmentById()
mit der ID desFragmentContainerView
verwendet, aber der Aufruf kann verkettet werden.val navController = binding.container.getFragment<NavHostFragment>().navController
In
FragmentScenario
ist jetztCloseable
implementiert, sodass du es mit der Methodeuse
von Kotlin oder mit try-with-resources verwenden kannst.Wir haben
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
hinzugefügt, um anzugeben, ob die Standardanimation zum Aktivitätsübergang aus Ihrem Design unter „Fragmentübergang“ aktiviert werden soll.Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue State Manager ist jetzt die einzige verfügbare Option.
Mehrere Back-Stacks
FragmentManager
verwaltet einen Back-Stack, der aus Fragmenttransaktionen besteht, für die addToBackStack()
verwendet wurde. Auf diese Weise können Sie diese Transaktionen in einem Pop-up abrufen und zum vorherigen Zustand zurückkehren, wobei Sie die Mechanismen für Status mit Fragmenten speichern verwenden, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
Dieser Release erweitert diese Mechanismen durch drei neue FragmentManager
APIs: 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 aller Fragmente zu speichern, die in diesen Transaktionen hinzugefügt wurden. So können Sie diese Transaktionen und ihre Fragmente später wiederherstellen, wobei ihr Status intakt ist. Auf diese Weise können Sie effektiv zwischen mehreren Back-Stacks wechseln, indem Sie den aktuellen Back-Stack speichern und einen gespeicherten Back Stack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
, da er asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen bestimmten Namen zurückgesetzt werden und alle hinzugefügten Fragmente gelöscht und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()
ist immer inklusive.- Im Gegensatz zu
popBackStack()
, das alle Transaktionen im Back-Stack aussortiert, wenn der angegebene Name nicht im Back-Stack gefunden wird oder wenn ein Nullname angegeben wird, geschieht beisaveBackStack()
nichts, wenn Sie bisher noch keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem Namen ausgeführt haben, der nicht null ist. - 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:
- Jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Der Satz an Transaktionen muss in sich geschlossen sein (d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieser Gruppe von Transaktionen verweisen), damit sie später wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in einem sitzungsspezifischen Satz an untergeordneten Fragmenten enthalten, damit
FragmentManager
nach dem Speichern des Back Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei „saveBackStack()
“, „restoreBackStack()
“ und „clearBackStack()
“, mit denen ein zuvor gespeicherter Back-Stack wiederhergestellt oder ein zuvor gespeicherter Backstack gelöscht werden kann, geschieht nichts, wenn Sie nicht bereits saveBackStack()
mit demselben Namen aufgerufen haben.
Weitere Informationen finden Sie unter Mehrere Back-Stacks: Im Detail.
Version 1.4.0-rc01
3. November 2021
androidx.fragment:fragment:1.4.0-rc01
ohne Änderungen gegenüber Fragment 1.4.0-beta01 veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Version 1.4.0-beta01
27. Oktober 2021
androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
und androidx.fragment:fragment-testing:1.4.0-beta01
wurden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Übergeordnete Fragmente leiten jetzt
onHiddenChanged()
nach unten in der gesamten Hierarchie weiter, bevor ihr eigener Callback gestartet wird. (Iedc20, b/77504618) - Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit geöffneter Tastatur zu einem Fragment mit einer Recycler-Ansicht wechseln. (I8b842, b/196852211)
DialogFragment
verwendet jetztsetReorderingAllowed(true)
für alle Transaktionen, die erstellt werden, wenn Sieshow()
,showNow()
oderdismiss()
aufrufen. (Ie2c14)- Die extrem lange Lint-Warnung von
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
wurden veröffentlicht. Version 1.4.0-alpha10 enthält diese Commits.
Fuss
- Die Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransaction
wurde hinzugefügt, um zu erkennen, dassdetach()
undattach()
in derselbenFragment
in derselbenFragmentTransaction
aufgerufen werden. Da sich diese ergänzenden Vorgänge in derselben Transaktion gegenseitig abbrechen, müssen sie in separate Transaktionen aufgeteilt werden, um eigentlich etwas tun zu können. (aosp/1832956, b/200867930) - Der Lint-Fehler
FragmentAddMenuProvider
zum Korrigieren der Nutzung des Fragmentlebenszyklus im Lebenszyklus der Fragmentansicht wurde hinzugefügt, wenn dieaddMenuProvider
API vonMenuHost
verwendet wird. (aosp/1830457, b/200326272)
Aktualisierungen der Dokumentation
- Die Mitteilung zur Einstellung von APIs, die jetzt von den Activity Result APIs verarbeitet wird (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
undonRequestPermissionsResult
), wurde um weitere Details erweitert. (cce80f) - Die Mitteilung zur Einstellung von
onActivityCreated()
fürFragment
undDialogFragment
wurde um mehr Details erweitert. 224 dB4
Version 1.4.0-alpha09
15. September 2021
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
und androidx.fragment:fragment-testing:1.4.0-alpha09
wurden veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
clearBackStack(name)
aufrufen, um jeden zuvor mitsaveBackStack(name)
gespeicherten Status zu löschen. (I70cd7)
API-Änderungen
- Die Klasse
FragmentContainerView
wurde in Kotlin neu geschrieben, damit die FunktiongetFragment
die Null-Zulässigkeit ordnungsgemäß respektiert. (If694a, b/189629145) - FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506).
Fehlerkorrekturen
- Der Status eines Fragments, das mit
setReorderingAllowed(true)
hinzugefügt und dann sofort vor dem Ausführen ausstehender Transaktionen entfernt wurde, wurde behoben. (I8ccb8)
Version 1.4.0-alpha08
1. September 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
und androidx.fragment:fragment-testing:1.4.0-alpha08
wurden veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Die
UseRequireInsteadOfGet
-Lint-Prüfung für den Umgang mit redundanten Klammern wurde verbessert. (I2d865) - Die
UseGetLayoutInflater
-Lint-Prüfung wurde verbessert, um zusätzliche Grenzfälle zu handhaben. (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 wichtige Änderungen veröffentlicht. Version 1.4.0-alpha07 enthält diese Commits.
Version 1.4.0-alpha06
4. August 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
und androidx.fragment:fragment-testing:1.4.0-alpha06
wurden veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit mehreren Backstacks behoben, bei dem schnell zwischen Back-Stacks gewechselt wurde, die beim Wiederherstellen eines
FragmentTransaction
alsIllegalStateException
oder als zweite Kopie eines Fragments angezeigt wurden. (I9039f) - Ein Problem wurde behoben, bei dem
FragmentManager
eine Kopie des Zustands beibehalten konnte, der zuvor übersaveBackStack()
gespeichert wurde, selbst nachdem dieser Status wiederhergestellt wurde. (Ied212) - Die Methode
dismissAllowingStateLoss()
vonDialogFragment
stürzt nicht mehr ab, wenn Sie sie aufrufen, nachdem der Status gespeichert wurde, wenn das DialogFragment speziell über die Methodeshow(FragmentTransaction, String)
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
wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Von Fragment
1.3.6
: Die Ansicht des Fragments ist jetzt korrekt aufGONE
festgelegt, wennhide()
verwendet wird, wenn in der StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) - Aus Fragment
1.3.6
:FragmentActivity
entsperrt jetzt immer den gespeicherten Status als erster Vorgang in Lebenszyklus-Callbacks, den er überschreibt. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6
: Fragmente hängen jetzt von Aktivität1.2.4
(I3a66c) ab
Version 1.4.0-alpha04
30. Juni 2021
androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
und androidx.fragment:fragment-testing:1.4.0-alpha04
wurden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
API-Änderungen
FragmentManager
verwendet jetztSavedStateRegistry
im Hintergrund, um den Status zu speichern. Die MethodensaveAllState()
undrestoreSavedState()
wurden inFragmentController
ebenfalls eingestellt. Wenn duFragmentController
zum Hosten von Fragmenten außerhalb vonFragmentActivity
verwendest, solltest duSavedStateRegistryOwner
von deinemFragmentHostCallbacks
implementieren. (Iba68e, b/188734238)
Fehlerkorrekturen
- Der Aufruf von
saveBackStack()
zur Unterstützung mehrerer Backstacks schlug fehl, wenn er gleichzeitig mit dem Ausführen einesFragmentTransaction
-Objekts mitreplace()
ausgeführt wurde. Dieses Problem wurde behoben. (I73137) - Ein
NullPointerException
wurde behoben, das nach manueller Wiederherstellung eines gespeicherten Back-Stacks mit mehreren Transaktionen bei Verwendung derrestoreBackStack()
API zur Unterstützung mehrerer Back-Stacks aufgetreten ist. Außerdem wurde ein Problem behoben, bei demsetReorderingAllowed(true)
nicht auf alle Transaktionen geprüft wurde. (I8c593) - Ein Problem wurde behoben, bei dem
FragmentManager
den zuvor gespeicherten Status von Fragmenten fälschlicherweise wiederhergestellt hat, selbst nachdem diese Fragmente aus demFragmentManager
entfernt wurden, wodurch der gespeicherte Status im Laufe der Zeit kontinuierlich wächst. (I1fb8e)
Version 1.4.0-alpha03
16. Juni 2021
androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
und androidx.fragment:fragment-testing:1.4.0-alpha03
wurden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- Alle Fragment StrictMode-Klassen
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 zum Container des übergeordneten Containers, dem das Fragment hinzugefügt worden wäre. (Ic33a7)WrongFragmentContainerViolation
zeigt jetzt eine detailliertere Fehlermeldung an, in der der Container angegeben ist, zu dem das Fragment hinzugefügt wurde. (Ib55f8)- Die Anwendungsfallklassen für
TargetFragmentUsageViolation
enthalten jetzt detailliertere Fehlermeldungen, um das den Verstoß verursachte Fragment und alle anderen enthaltenen Informationen einzubeziehen. ICC6ac - Die Klassen, die
RetainInstanceUsageViolation
erweitern, haben jetzt detailliertere Fehlermeldungen, die das den Verstoß verursachende Fragment enthalten. (I6bd55) FragmentReuseViolation
zeigt jetzt eine detailliertere Fehlermeldung an, die die vorherige ID des Fragments enthält. (I28ce2)SetUserVisibleHintViolation
zeigt jetzt eine detailliertere Fehlermeldung an, die den für den Nutzer sichtbaren Hinweis enthält. (Ib2d5f)
Änderungen des Verhaltens
- Die Einschränkung für das Aufrufen von
fitsSystemWindows
aufFragmentContainerView
wurde wiederhergestellt. Dadurch wird deine App nicht mehr abstürzen. (6b8ddd, b/190622202)
Fehlerkorrekturen
- Aus Fragment
1.3.5
: Eine Regression der Übergänge geteilter Elemente, die in Fragment1.3.4
von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten die Übergangsgruppen jetzt korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
). Freigegebene Elemente lösen dann keineIndexOutOfBoundsException
s mehr aus. (I16484, b/188679569, b/188969304) FragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein zu entfernendes Fragment auszublenden. (I573dd, b/183634730)- Die Lint-Prüfung
OnCreateDialogIncorrectCallback
kommt nicht mehr zum Absturz, wenn eine Variable auf oberster Ebene ausgewertet wird. (0a9efa, b/189967522)
Version 1.4.0-alpha02
2. Juni 2021
androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
und androidx.fragment:fragment-testing:1.4.0-alpha02
wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
protokolliert jetzt immer Verstöße, wenn das Logging überFragmentManager
aktiviert ist, unabhängig von der aktuell verwendeten Richtlinie im strikten Modus. (I02df6, b/187872638)FragmentStrictMode
unterstützt jetzt den Ausschluss bestimmterFragment
-Klassen vom strengen ModusViolation
s, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)Die Klasse
FragmentStrictMode
Violation
wurde erweitert, um basierend auf jedem Verstoß Strukturinformationen hinzuzufügen. So können Sie genau prüfen, wodurch der Verstoß verursacht wurde, zusammen mit dem fragmentierten Fragment (If5118, b/187871150). JedeViolation
enthält Folgendes:WrongFragmentContainerViolation
enthält jetzt dieViewGroup
, der dasFragment
hinzugefügt werden sollte. (I83c75, b/187871150)TargetFragmentUsageViolation
wurde zuSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
undGetTargetFragmentRequestCodeUsageViolation
erweitert, wobeiSetTargetFragmentUsageViolation
das Zielfragment und den Anfragecode enthält. (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 aufzublähen (I5dbbc, b/187871150).FragmentReuseViolation
enthält jetzt die eindeutige ID der vorherigen Instanz desFragment
, der den Verstoß verursacht hat. (I0544d, b/187871150)RetainInstanceUsageViolation
ist jetzt abstrakt und hat zwei abgeleitete Klassen,SetRetainInstanceUsageViolation
undGetRetainInstanceUsageViolation
, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)
Änderungen des Verhaltens
FragmentContainerView
gibt jetzt eine Ausnahme aus, wenn versucht wird, dasfitsSystemWindow
-Attribut programmatisch oder über XML zu ändern. Einsätze sollten in der Ansicht jedes einzelnen Fragments verarbeitet werden. (Ie6651, b/187304502)
Version 1.4.0-alpha01
18. Mai 2021
androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
und androidx.fragment:fragment-testing:1.4.0-alpha01
wurden veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das zuletzt dem Container hinzugefügte Fragment zurückgibt. Dabei wird dieselbe Logik wie beifindFragmentById()
mit der ID desFragmentContainerView
verwendet, aber der Aufruf kann verkettet werden. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Wir haben
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
hinzugefügt, um anzugeben, ob die Standardanimation zum Aktivitätsübergang aus Ihrem Design unter „Fragmentübergang“ aktiviert werden soll. (I46652)
Mehrere Back-Stacks
FragmentManager
verwaltet einen Back-Stack, der aus Fragmenttransaktionen besteht, für die addToBackStack()
verwendet wurde. Auf diese Weise können Sie diese Transaktionen in einem Pop-up abrufen und zum vorherigen Zustand zurückkehren, wobei Sie die Mechanismen für Status mit Fragmenten speichern verwenden, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
Mit 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 aller Fragmente zu speichern, die in diesen Transaktionen hinzugefügt wurden. So können Sie diese Transaktionen und ihre Fragmente später wiederherstellen, wobei ihr Status intakt ist. Auf diese Weise können Sie effektiv zwischen mehreren Back-Stacks wechseln, indem Sie den aktuellen Back-Stack speichern und einen gespeicherten Back Stack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
, da er asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen bestimmten Namen zurückgesetzt werden und alle hinzugefügten Fragmente gelöscht und entfernt werden. Es gibt jedoch einige wichtige Unterschiede:
saveBackStack()
ist immer inklusive.- Im Gegensatz zu
popBackStack()
, das alle Transaktionen im Back-Stack aussortiert, wenn der angegebene Name nicht im Back-Stack gefunden wird oder wenn ein Nullname angegeben wird, geschieht beisaveBackStack()
nichts, wenn Sie bisher noch keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem Namen ausgeführt haben, der nicht null ist. - 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:
- Jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Der Satz an Transaktionen muss in sich geschlossen sein (d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieser Gruppe von Transaktionen verweisen), damit sie später wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back-Stack vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder ein beibehaltenes Fragment in einem sitzungsspezifischen Satz an untergeordneten Fragmenten enthalten, damit
FragmentManager
nach dem Speichern des Back Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie saveBackStack()
geschieht bei restoreBackStack()
nichts, wenn du saveBackStack()
zuvor nicht mit demselben Namen aufgerufen hast. (b/80029773)
Fragment StrictMode
Die FragmentStrictMode
APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre von Ihnen abhängigen Anwendungen oder Bibliotheken keine eingestellten Fragment APIs aufrufen. Wenn ein Verstoß erkannt wird, kannst du eine Lognachricht ausgeben, deinen eigenen benutzerdefinierten Listener auslösen oder deine App abstürzen. Die FragmentStrictMode.Policy
, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann mit der neuen Methode setStrictModePolicy()
für eine FragmentManager
festgelegt werden. Diese Richtlinie gilt für die FragmentManager
und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (#123, #131, #150, b/143774122)
detectFragmentReuse()
erkennt, ob eine zuvor entfernteFragment
-Instanz einerFragmentManager
wieder hinzugefügt wird. Sie sollten niemals mit einerFragment
-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie gelöscht und aus einemFragmentManager
entfernt wurde. (#142, b/153738653)detectFragmentTagUsage()
erkennt, ob das<fragment>
-Tag in der Layout-XML-Datei verwendet wird. Wenn Sie Fragmente als Teil Ihres Layouts aufblähen, sollten Sie immerFragmentContainerView
verwenden. (Nr. 141, b/153738235)detectWrongFragmentContainer()
erkennt, wenn Sie einem Container ein Fragment hinzufügen, das keinFragmentContainerView
ist. Sie sollten in Ihrem Layout immerFragmentContainerView
als Container für Fragmente verwenden. (Nr. 146, b/181137036)detectRetainInstanceUsage()
erkennt, wenn Sie die verworfenen APIssetRetainInstance()
odergetRetainInstance()
verwenden. (#140, b/153737954)detectSetUserVisibleHint()
erkennt, wenn Sie die verworfenesetUserVisibleHint()
API verwenden. (#136, b/153738974)detectTargetFragmentUsage()
erkennt, wenn Sie die verworfenen APIssetTargetFragment()
,getTargetFragment()
odergetTargetRequestCode()
verwenden. (#139, b/153737745)
API-Änderungen
- Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue State Manager ist jetzt die einzige verfügbare Option. (I90036, b/162776418) - In
FragmentScenario
ist jetztCloseable
implementiert, sodass du es mit der Methodeuse
von Kotlin oder mit try-with-resources verwenden kannst. (#121, b/143774122)
Neue Lint-Prüfungen
- Die
UseGetLayoutInflater
-Lint-Prüfung warnt jetzt, wennLayoutInflater.from(Context)
innerhalb einesDialogFragment
-Elements verwendet wird. Sie sollten immer diegetLayoutInflater()
-Methode des Dialogfragments verwenden, um ein geeignetesLayoutInflater
-Element zu erhalten. (#156, b/170781346) - Die
DialogFragmentCallbacksDetector
-Lint-Prüfung warnt jetzt beim Aufrufen vonsetOnCancelListener
odersetOnDismissListener
in deronCreateDialog()
-Methode einerDialogFragment
– diese Listener gehören zurDialogFragment
selbst und Sie solltenonCancel()
undonDismiss()
überschreiben, um diese Callbacks zu erhalten. (#171, b/181780047, b/187524311)
Fehlerkorrekturen
- Aus Fragment 1.3.4: Eine Regression wurde behoben, die in Fragment
1.3.3
eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder die Jetpack Compose-Methode vonviewModel()
in einem Fragment verwendet wurde. In diesen Anwendungsfällen wird das von Ihrem Fragment bereitgestellteViewModelProvider.Factory
jetzt korrekt verwendet, wenn esgetDefaultViewModelProviderFactory()
überschreibt (wie@AndroidEntryPoint
-annotierte Fragmente bei Verwendung von „Hilt“). Wenn Sie diese Methode nicht überschreiben, wird einSavedStateViewModelFactory
als Standard-Factory erstellt, der seinen Zustand zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Ab Fragment 1.3.4: Wenn
FragmentContainerView
in API 29 verwendet wird, werden Einsätze nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben. (I1bb78, b/186012452) - Ab Fragment 1.3.4: Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Ab Fragment 1.3.4: Wenn für eine ViewGroup ein gemeinsamer Elementübergang vorgenommen wird und
transitionGroup
für die ViewGroup auf „false“ gesetzt ist, erfolgt der Übergang jetzt korrekt. (I99675)
Externer Beitrag
- Vielen Dank, simonschiller, dass du
FragmentScenario
für die Implementierung vonCloseable
gesorgt hast. (#121, b/143774122) - Vielen Dank, simonschiller, dass du die gesamte
FragmentStrictMode
-API für diesen Release hinzugefügt hast. (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/156, b/153738235, {36,#7/153, {16,14, {16,14, {16,, {16,14, {16,14, {16,14, {36,14, {16,14, {16,14, b/142, b/153738653 - Vielen Dank an tatocaster, dass du die
UseGetLayoutInflater
-Lint-Prüfung hinzugefügt hast. (#156, b/170781346) - Vielen Dank an tatocaster, dass du die
DialogFragmentCallbacksDetector
-Lint-Prüfung hinzugefügt hast. (Nr. 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
wurden veröffentlicht. Version 1.3.6 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.4.0-alpha03
:FragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein zu entfernendes Fragment auszublenden. (I573dd, b/183634730) - Die Ansicht des Fragments ist jetzt korrekt auf
GONE
festgelegt, wennhide()
verwendet wird und für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) FragmentActivity
entsperrt nun immer den gespeicherten Status als erster Vorgang in Lebenszyklus-Callbacks, der überschrieben wird. (I6db7a)
Abhängigkeitsupdate
- Aus Fragment
1.3.6
: Fragmente hängen jetzt von Aktivität1.2.4
(I3a66c) ab
Version 1.3.5
16. Juni 2021
androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
und androidx.fragment:fragment-testing:1.3.5
wurden veröffentlicht. Version 1.3.5 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression bei Übergängen geteilter Elemente, die in Fragment
1.3.4
von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten die Übergangsgruppen jetzt korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
). Freigegebene Elemente lösen dann keineIndexOutOfBoundsException
s mehr aus. (I16484, b/188679569, b/188969304)
Version 1.3.4
18. Mai 2021
androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
und androidx.fragment:fragment-testing:1.3.4
wurden veröffentlicht. Version 1.3.4 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression wurde behoben, die in Fragment
1.3.3
eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder die Jetpack Compose-Methode vonviewModel()
in einem Fragment bei Verwendung von Hilt verwendet wurde. In diesen Anwendungsfällen wird das von deinem Fragment bereitgestellteViewModelProvider.Factory
jetzt korrekt verwendet, wenngetDefaultViewModelProviderFactory()
überschrieben wird (wie es bei@AndroidEntryPoint
-Anmerkungen der Fall ist). Wenn Sie diese Methode nicht überschreiben, wird einSavedStateViewModelFactory
als Standard-Factory erstellt, der seinen Zustand zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Wenn
FragmentContainerView
in API 29 verwendet wird, werden Eingaben nicht mehr unbegrenzt gesendet, wodurch Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben werden. (I1bb78, b/186012452) - Sie können Ihr Parcelable jetzt nach dem Beenden des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Wenn für eine ViewGroup ein gemeinsamer Elementübergang vorgenommen wird und
transitionGroup
für die ViewGroup auf „false“ gesetzt ist, erfolgt der Übergang jetzt korrekt. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
und androidx.fragment:fragment-testing:1.3.3
wurden veröffentlicht. Version 1.3.3 enthält diese Commits.
Neue Funktionen
SavedStateViewModelFactory
funktioniert jetzt in Verbindung mit demSavedStateRegistryOwner
, das vonViewTreeSavedStateRegistryOwner.get()
mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)
Fehlerkorrekturen
- Eine in Fragment
1.3.2
eingeführte Regression wurde behoben, die dazu führte, dasspopEnter
-Animationen nicht ausgeführt wurden, wenn einFragmentTransaction
gesendet wurde, das einesetPrimaryNavFragment
-Operation enthielt, wie z. B. die vonNavHostFragment
verwendeten. (I38c87, b/183877426) FragmentContainerView
sorgt nun dafür, dass jedeFragment
einen neuen SatzWindowInsets
abschickt, sodass jedes Fragment die Einfügungen jetzt unabhängig nutzen kann. (I63f68, b/172153900)DialogFragment
verarbeitet jetzt korrekt Fälle, in denen ein untergeordnetes Fragment einem Container hinzugefügt wird, der dieselbe ID wie ein Container in Ihrer benutzerdefiniertenDialog
-Klasse hat. Dadurch werden Probleme mit der Ansichtshierarchie bei der Wiederverwendung von IDs behoben, die intern von Dialogfeldern wieBottomSheetDialog
verwendet werden. (Ie6279, b/180021387)- Mit
FragmentManager.dump()
wird das erste Fragment in der Liste der aktiven Fragmente jetzt korrekt eingerückt. (If5c33, b/183705451)
Neue Fehlerkorrekturen in State Manager
- Der neue Fragmentstatus-Manager handhabt jetzt Exit-Übergänge mit Versteckvorgängen ordnungsgemäß. (I9e4de, b/184830265)
Version 1.3.2
24. März 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
und androidx.fragment:fragment-testing:1.3.2
wurden veröffentlicht. Version 1.3.2 enthält diese Commits.
Neue Fehlerkorrekturen in State Manager
- Wenn Sie sowohl
popBackStack()
- als auchcommit()
-Vorgänge zusammen ausführen, wird jetzt mit dem letzten Vorgang die Richtung für alle Animationen festgelegt, anstatt einige Pop-Animationen und einige neue Animationen auszuführen. (I7072e, b/181142246) - Bei Ansichten innerhalb einer Hierarchie eines gemeinsamen Elements wird der Übergangsname nicht mehr gelöscht, wenn ein Übergang zwischen Elementen erfolgt. (I4d4a6, b/179934757)
Aktualisierungen von Abhängigkeiten
- Das Fragment hängt jetzt von Activity 1.2.2 ab. Dadurch wird ein Problem mit der
InvalidFragmentVersionForActivityResult
-Lint-Prüfung von Aktivität bei Verwendung von Fragment 1.3.1 oder höher behoben. - Das Fragment hängt jetzt von Lebenszyklus 2.3.1 ab.
Version 1.3.1
10. März 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
und androidx.fragment:fragment-testing:1.3.1
wurden veröffentlicht. Version 1.3.1 enthält diese Commits.
Neue Funktionen
- Dialoge in
DialogFragment
können jetzt über DecorView auf ViewTree-Inhaber zugreifen, sodassDialogFragment
mitComposeView
verwendet werden kann. (Ib9290, b/180691023)
Fehlerkorrekturen
- Fragmente, die mit FragmentContainerView in eine bereits
RESUMED
-Aktivität aufgebläht wurden, werden nach einer Konfigurationsänderung jetzt korrekt angezeigt. (Ie14c8, b/180538371) - Es gibt kein zusätzliches
}
am Ende des FragmentstoString()
(I54705, b/177761088). - Überschriebene Methoden in FragmentActivity übernehmen jetzt korrekt die Basismethode javaDoc (I736ce, b/139548782).
- Die Parameterdokumentation für
setFragmentResult
undsetFragmentResultListener
wurde aktualisiert, um zu berücksichtigen, dass keine Nullwerte mehr akzeptiert werden (I990ba, b/178348386).
Neue Fehlerkorrekturen in State Manager
- Ein durch
mFocusedView
verursachtes Speicherleck in Fragmenten wurde behoben (Ib4e9e, b/179925887). - Fragmente rufen jetzt ordnungsgemäß
onCreateOptionsMenu
auf, wenn Transaktionen zum Ein-/Ausblenden verwendet werden (I8bce8, b/180255554). - Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen jetzt korrekt
RESUMED
(Ic11e6, b/180825150). - Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, gelangen jetzt immer zuRESUMED
(I452ac, (I9fa49).
Aktualisierungen von Abhängigkeiten
- Fragment 1.3.1 hängt von Aktivität
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
wurden veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Neuer State Manager: Durch eine umfassende Überarbeitung der internen Strukturen von
FragmentManager
wurden zahlreiche Probleme in Bezug auf die Weiterleitung von Lebenszyklus-Ereignissen, Animationen und Übergängen sowie die Handhabung verschobener Fragmente behoben. Integration der Activity Result API: Die in Aktivität
1.2.0
eingeführteActivityResultRegistry
API wird nun unterstützt, umstartActivityForResult()
+onActivityResult()
- undrequestPermissions()
+onRequestPermissionsResult()
-Abläufe zu verarbeiten, ohne die 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.- Diese Version behebt eine Reihe von Problemen im Zusammenhang mit ungültigen Anfragecodes und der Versendung von Berechtigungsanfragen, die verhindern, dass die Activity Result API bei früheren Versionen von
FragmentActivity
funktioniert. Sie müssen ein Upgrade auf Fragment 1.3.0 durchführen, um die Activity Result APIs in einemFragmentActivity
oderAppCompatActivity
verwenden zu können.
- Diese Version behebt eine Reihe von Problemen im Zusammenhang mit ungültigen Anfragecodes und der Versendung von Berechtigungsanfragen, die verhindern, dass die Activity Result API bei früheren Versionen von
Fragment Result API: Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf
FragmentManager
wurde hinzugefügt. Dies funktioniert für hierarchische Fragmente (über-/untergeordnete), DialogFragments und Fragmente in der Navigation und stellt sicher, dass Ergebnisse nur an Ihr Fragment gesendet werden, solange es mindestensSTARTED
ist. Die Ziel-Fragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Siehe Ergebnisse mithilfe der Fragment Result API abrufen.FragmentOnAttachListener
: DeronAttachFragment()
-Callback fürFragmentActivity
undFragment
wurde eingestellt. Eine neueFragmentOnAttachListener
wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren vononAttachFragment()
für separate, testbare Listener und das Hinzufügen eines Listeners zu anderen FragmentManagern als Ihrem direkten untergeordneten FragmentManager.FragmentScenario
-Verbesserungen: DieFragmentScenario
-Klasse aus demfragment-testing
-Artefakt wurde in Kotlin neu geschrieben und hat eine Reihe von Verbesserungen erhalten:FragmentScenario
verwendet jetztsetMaxLifecycle()
zur Implementierung vonmoveToState()
. Dadurch wird ein konsistentes Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt.FragmentScenario
unterstützt jetzt das Festlegen einer anfänglichenLifecycle.State
, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu jederLifecycle.State
gewechselt wird.- Es gibt jetzt eine Alternative zur
FragmentScenario
API vononFragment
in Form der Kotlin-Reified-ErweiterungsmethodewithFragment
, mit der ein Wert zurückgegeben werden kann. Insbesondere werden die im jeweiligen Block ausgelösten Ausnahmen wiederholt.
ViewTree
-Unterstützung:Fragment
unterstützt jetzt dieViewTreeLifecycleOwner.get(View)
-,ViewTreeViewModelStoreOwner.get(View)
- undViewTreeSavedStateRegistryOwner
-APIs, die in Lebenszyklus2.3.0
und SavedState1.1.0
hinzugefügt wurden. Dadurch wird das Fragment alsViewModelStoreOwner
und einSavedStateRegistryOwner
undLifecycleOwner
zurückgegeben, das mit dem Ansichtslebenszyklus des Fragments verknüpft ist, wenn einView
innerhalb einesFragment
verwendet wird.Änderungen an der
TRANSIT_
-Animation: Für die Standardeffekte des Fragments,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. Die zum Erstellen dieser Animatoren verwendeten Ressourcen sind jetzt privat.Einstellung von
setRetainInstance()
: Die MethodesetRetainInstance()
für Fragmente wurde verworfen. Mit der Einführung von ViewModels steht Entwicklern eine spezielle API zur Beibehaltung des Status zur Verfügung, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Dies ermöglicht Entwicklern, ein normales, nicht beibehaltenes Fragment zu verwenden und den spezifischen Status, den sie beibehalten möchten, separat zu halten. Dadurch wird eine gemeinsame Quelle von Datenlecks vermieden und gleichzeitig die nützlichen Eigenschaften einer einzelnen Erstellung und des Löschens des beibehaltenen Status beibehalten (nämlich der Konstruktor desViewModel
- und desonCleared()
-Callbacks, den es erhält).Einstellung des ViewPager 1-Adapters: 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
wurden veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein übergeordnetes
DialogFragment
-Element nach einer Konfigurationsänderung über einem untergeordnetenDialogFragment
angezeigt wurde. Fragmente untergeordneter Dialoge werden jetzt immer über einem übergeordneten Dialogfragment angezeigt. (I30806, b/177439520) - Ein Problem wurde behoben, bei dem ein
hide
-Vorgang mit einemAnimation
dazu führte, dass das Fragment zum Ausblenden am Ende der Animation blinkte. (I57e22, b/175417675) - Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen
RESUMED
jetzt korrekt. (I1fc1d, b/177154873)
Neue Fehlerkorrekturen in State Manager
- Die Ansicht
Lifecycle
des Fragments verarbeitet jetzt Fälle, in denen die Ansicht des Fragments gelöscht wird, bevor dasLifecycle
CREATED
erreicht. Ausnahmen mit dem Hinweis „kein Ereignis von INITIALIZED“ werden vermieden. (eda2bd, b/176138645) - Fragmente, die ein
Animator
verwenden, 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
wurden 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 in State Manager
- Ein Leak und ein visuelles Artefakt wurden behoben, das beim Hinzufügen eines Fragments mit einem
Animation
zu einemFragmentContainerView
und anschließendes Unterbrechen dieser Ergänzung mit einem Pop-Vorgang behoben wurde. (I952d8) - Ein Problem wurde behoben, bei dem die Ansicht des Fragments in der Ansichtshierarchie blieb, wenn sie während der Methoden
onCreate()
oderonViewCreated()
ersetzt wurde. (I8a7d5) - Der Fokus wird jetzt korrekt in den Stammansichten der Fragmente wiederhergestellt, wenn sie fortgesetzt werden. (Ifc84b)
- Wenn Pop- und Ersetzungsvorgänge in derselben Fragment-Transaktion kombiniert werden, werden jetzt die richtigen Animationen angezeigt (Ifd4e4, b/170328691).
Version 1.3.0-beta02
2. Dezember 2020
androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
und androidx.fragment:fragment-testing:1.3.0-beta02
wurden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
Neue Funktionen
FragmentScenario
wurde vollständig in Kotlin konvertiert, wobei die Quell- und Binärkompatibilität über die Nutzung der funktionalen Schnittstellen von Kotlin 1.4 fürFragmentAction
aufrechterhalten wurde. (I19d31)
Änderungen des Verhaltens
- FragmentContainerViews, die ein Fragment nicht mit dem Attribut
class
oderandroid:name
aufblähen, können jetzt außerhalb einesFragmentActivity
verwendet werden. (Id4397, b/172266337) - Beim Versuch, den maximalen Lebenszyklus eines Fragments auf
DESTROYED
festzulegen, wird jetzt einIllegalArgumentException
ausgegeben (Ie7651, b/170765622). - Beim Initialisieren eines FragmentSzenarios mit dem Status
DESTROYED
wird jetzt einIllegalArgumentException
ausgelöst (I73590, b/170765622).
Neue Fehlerkorrekturen in State Manager
- Die Ansicht erreichte nicht ihren endgültigen Zustand, wenn ein Fragmentübergang unterbrochen wurde, bei dem
Animator
oder eine derTRANSIT_FRAGMENT_
-Optionen verwendet wurde. Dieses Problem wurde behoben. (I92426, b/169874632) - Es wurde ein Problem behoben, bei dem Fragmente mit einem verlassenen
Animation
nicht richtig gelöscht wurden. (I83d65) - Wenn Sie Fragmente beenden, deren Effekte umgekehrt sind, werden sie jetzt korrekt abgebrochen und mit dem richtigen Effekt neu gestartet. (I62226, b/167092035)
- Es wurde ein Problem behoben, bei dem der
Animator
-Exit eineshide()
-Elements nicht ausgeführt wurde. (Id7ffe) - Fragmente werden jetzt korrekt angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
- Bei Fragmenten, die während einer Animation ihre fokussierte Ansicht entfernen, wird nicht mehr versucht, den Fokus auf die losgelöste Ansicht wiederherzustellen, sobald sie
RESUMED
erreicht haben (I38c65, b/172925703).
Externer Beitrag
FragmentFactory
speichert Fragmentklassen jetzt separat für verschiedeneClassLoader
-Instanzen im Cache. Danke, Simon Schiller! (#87, b/113886460)
Version 1.3.0-beta01
1. Oktober 2020
androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
und androidx.fragment:fragment-testing:1.3.0-beta01
wurden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
Neue Funktionen
setMaxLifecycle()
unterstützt jetzt das Festlegen des StatusLifecycle
aufINITIALIZING
, solange das Fragment nicht nachCREATED
verschoben wurde. (b/159662173)
API-Änderungen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Änderungen des Verhaltens
- Fragment-Ressourcendateien wurden korrekt als privat gekennzeichnet. (aosp/1425237)
Fehlerkorrekturen
- Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, warten jetzt, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie zu STARTED (I02f4c) verschoben werden. - Fragmente, die sichtbar sind, und dann von
setMaxLifecycle()
bisCREATED
, führen jetzt ihre Exit-Effekte korrekt aus. (b/165822335) - Das Entfernen eines getrennten Fragments, das nicht zum Back Stack hinzugefügt wurde, verursacht kein Speicherleck mehr. Mit freundlicher Genehmigung von Nicklas Ansman Giertz! (b/166489383)
- Aktive Fragmente haben jetzt immer eine
FragmentManager
ungleich null und Fragmente mit einerFragmentManager
ungleich null werden immer als aktiv angesehen. (aosp/1422346) - Für die Standardeffekte des Fragments,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. (b/166155034)
Neue Fehlerkorrekturen in State Manager
- Fragmente können jetzt richtig den Fokusstatus der Ansicht von rechts vor dem Start der Animation wiederherstellen. (IC256)
- Fragmente, die nur einen gemeinsamen Elementübergang haben, vervollständigen ihre Spezialeffekte jetzt ordnungsgemäß. Das heißt, sie werden tatsächlich in ihren endgültigen Zustand verschoben (Iaebc7, b/166658128).
- Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie gelöscht werden. (Id5876)
- Der neue Statusmanager entfernt nun konsequent die verlassene Fragmentansicht, bevor die eingegebene hinzugefügt wird. (I41a6e)
- Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie also die Ansicht eines eingehenden Fragments auf
INVISIBLE
vor Beginn der Animation festlegen, bleibt es tatsächlich unsichtbar. (b/164481490) - Fragmente haben jetzt Vorrang vor
Animators
Animations
, was bedeutet, dass ein Fragment mit beiden nur dasAnimator
ausführt und dasAnimation
ignoriert. (b/167579557) - Der neue Status-Manager führt nicht mehr dazu, dass Fragmente beim Eingeben von Animationen blinken. (b/163084315)
Bekanntes Problem
Wenn Sie beim Verwenden des neuen Statusmanagers die Taste „Zurück“ während eines Spezialeffekts drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt, sodass ein leerer Bildschirm angezeigt wird. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19. August 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
und androidx.fragment:fragment-testing:1.3.0-alpha08
wurden veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.
Neuer State Manager
Diese Version umfasst eine umfassende Refaktorierung der internen Statusverwaltung von FragmentManager
, die sich auf die Absendung von Lebenszyklusmethoden, Animationen und Übergänge sowie die Handhabung verschobener Transaktionen auswirkt. Dies ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost Fragmente: Interne Elemente neu erstellen. (b/139536619 und 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 bei Verwendung des neuen Statusmanagers behoben:
- Das vorherige Fragment eines
replace
-Vorgangs wird jetzt korrekt beendet, bevor das neue Fragment gestartet wird. (b/161654580) - Fragmente verhindern jetzt mehrere konkurrierende Animationen auf denselben Fragmenten. Dadurch werden Fälle vermieden, in denen ein
Animation
alleTransition
-Effekte überschreibt oder einAnimator
und einTransition
für ein einzelnes Fragment beide ausführen würden. (b/149569323) enterTransition
undexitTranstion
aller ein- und aussteigender Fragmente werden jetzt ausgeführt und nicht mehr nur das letzte eingegebene und das erste abgehende Fragment. (b/149344150)- Verschobene Fragmente bleiben nicht mehr im Status
CREATED
hängen, sondern werden mit anderen Fragmenten nachSTARTED
verschoben. (b/129035555) - Ein Problem wurde behoben, bei dem
FragmentManager
Vorgänge in einer falschen Reihenfolge ausführte, wenn eine verschobene neu geordnete Transaktion und eine nicht neu geordnete Transaktion kombiniert wurden. (b/147297731) - Das gleichzeitige Löschen mehrerer Fragmente führt nicht mehr dazu, dass Zwischenfragmente beim Verschieben von Fragmenten vorübergehend sichtbar sind. (b/37140383)
FragmentManager
gibt jetzt die korrekten Fragmente zurück, wennfindFragmentById()
oderfindFragmentByTag()
innerhalb desonAttachFragment()
-Callbacks aufgerufen wird. (b/153082833)- Fragmente rufen nicht mehr
onCreateView()
bei Fragmenten auf, die zerstört werden, wenn das Fragment, das sie ersetzt, verschoben wird. (b/143915710) - In der Fehlermeldung beim Versuch, Framework-
Transition
- und AndroidX-Transition
-Instanzen zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang angegeben. (b/155574969)
Änderungen des Verhaltens
- Sie können jetzt
launch()
für einActivityResultLauncher
in der LebenszyklusmethodeonCreate()
eines Fragments aufrufen. (b/161464278) - Wenn
registerForActivityResult()
nachonCreate()
aufgerufen wird, wird jetzt eine Ausnahme ausgegeben, die angibt, dass dies nicht zulässig ist. Außerdem können nach einer Konfigurationsänderung keine Ergebnisse ausgegeben werden. (b/162255449) FragmentActivity
verwendet jetzt die in Aktivität1.2.0-alpha08
eingeführteOnContextAvailableListener
API, um den Status vonFragmentManager
wiederherzustellen. Alle Listener, die zu Unterklassen vonFragmentActivity
hinzugefügt wurden, werden nach diesem Listener ausgeführt. (I513da)
Fehlerkorrekturen
ActivityOptions
, die bei Verwendung vonstartIntentSenderForResult()
übergeben wurden, werden jetzt berücksichtigt. (b/162247961)
Bekanntes Problem
- Wenn Sie bei Verwendung des neuen Statusmanagers die Sichtbarkeit der Stammansicht des Fragments direkt nach
onViewCreated()
und voronResume()
festlegen, wird die von Ihnen festgelegte Sichtbarkeit vonFragmentManager
überschrieben. Diese Person steuert die Sichtbarkeit der Stammansicht. Als Behelfslösung sollten Sie immer die Operationenhide()
undshow()
verwenden, um die Sichtbarkeit des Fragments zu ändern. (b/164481490)
Version 1.3.0-alpha07
22. Juli 2020
androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
und androidx.fragment:fragment-testing:1.3.0-alpha07
wurden 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 verschieben. (b/159662750)- Eine Alternative zur
FragmentScenario
API vononFragment
wurde in Form der Kotlin-Reified-ErweiterungsmethodewithFragment
hinzugefügt, mit der ein Wert zurückgegeben werden kann. Insbesondere werden die im jeweiligen Block ausgelösten Ausnahmen wiederholt. (b/158697631)
Änderungen des Verhaltens
FragmentScenario
verwendet jetztsetMaxLifecycle()
zur Implementierung vonmoveToState()
. Dadurch wird ein konsistentes Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt. (b/156527405)- Das von
ViewTreeSavedStateRegistryOwner
zurückgegebeneSavedStateRegistryOwner
ist jetzt an den Lebenszyklus der Fragmentansicht gebunden. Dadurch wird sichergestellt, dass der Status gespeichert und gleichzeitig mit der Ansicht des Fragments wiederhergestellt wird. (b/158503763)
Fehlerkorrekturen
- Fragmente warten jetzt, bis die Ansicht des Fragments angehängt wurde, bevor sie
ViewCompat.requestApplyInsets()
aufrufen. Dadurch werden Fälle vermieden, in denen die eingefügte Anfrage gelöscht wurde. (b/158095749) - Durch das Aufrufen von
clearFragmentResultListener
wird der Lebenszyklus-Beobachter jetzt ordnungsgemäß gelöscht. (b/159274993)
Version 1.3.0-alpha06
10. Juni 2020
androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
und androidx.fragment:fragment-testing:1.3.0-alpha06
wurden veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Der
onAttachFragment()
-Callback fürFragmentActivity
undFragment
wurde eingestellt. Eine neueFragmentOnAttachListener
wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren vononAttachFragment()
in separate, testbare Listener und das Hinzufügen eines Listeners zu anderen FragmentManagern als Ihrem direkt untergeordneten FragmentManager. (I06d3d)
Fehlerkorrekturen
- Bei übergeordneten Fragmenten wird jetzt der Ansichtsstatus vor den untergeordneten Fragmenten wiederhergestellt. Dadurch wird nach einer Konfigurationsänderung ein visuelles Sortierungsproblem behoben, wenn ein
DialogFragment
eine andereDialogFragment
als untergeordnetes Fragment anzeigt. (b/157195715) - Ein Problem wurde behoben, bei dem die
UseRequireInsteadOfGet
-Lint-Prüfung verkettete Nutzungen der Operatoren?.
und!!
nicht korrekt verarbeitete. (b/157677616)
Version 1.3.0-alpha05
20. Mai 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
und androidx.fragment:fragment-testing:1.3.0-alpha05
wurden veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Zusätzliche Unterstützung für
ViewTreeViewModelStoreOwner
aus Lebenszyklus2.3.0-alpha03
undViewTreeSavedStateRegistryOwner
aus SavedState1.1.0-alpha01
, wenn einView
innerhalb vonFragment
verwendet wird. (aosp/1297993, aosp/1300264)
API-Änderungen
- Die APIs
setFragmentResult()
undsetFragmentResultListener()
verwenden jetzt einenBundle
ungleich null bzw.FragmentResultListener
. Verwenden Sie die neuen MethodenclearFragmentResult()
undclearFragmentResultListener()
, um ein zuvor festgelegtes Ergebnis oder einen zuvor festgelegten Listener explizit zu löschen. (b/155416778) - Die
setFragmentResultListener()
-Kotlin-Erweiterungen, die eine Lambda-Funktion ausführen, sind jetzt alsinline
gekennzeichnet. (b/155323404)
Änderungen des Verhaltens
- Die zuvor verworfenen
startActivityForResult()
,startIntentSenderForResult()
undrequestPermissions
inFragment
verwenden jetzt internActivityResultRegistry
. Dadurch wird die Einschränkung aufgehoben, bei der Sie bei Verwendung dieser APIs nur die niedrigeren Bits (unter0xFFFF
) für Ihre Anfragecodes verwenden. (b/155518741)
Aktualisierungen der Dokumentation
- Die Dokumentation zu den Konstruktoren
Fragment(@LayoutRes int)
undDialogFragment(@LayoutRes int)
wurde erweitert, um zu verdeutlichen, dass sie über den Nicht-Argument-Konstruktor Ihrer Unterklassen aufgerufen werden sollten, wenn der Standard-FragmentFactory
verwendet wird. (b/153042497)
Version 1.3.0-alpha04
29. April 2020
androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
und androidx.fragment:fragment-testing:1.3.0-alpha04
wurden veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs unter
FragmentManager
hinzugefügt. Dies funktioniert für hierarchische Fragmente (über-/untergeordnete), DialogFragments und Fragmente in der Navigation und stellt sicher, dass Ergebnisse nur an Ihr Fragment gesendet werden, solange es mindestensSTARTED
ist. (b/149787344)
API-Änderungen
- Die Zielfragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
- Die APIs
startActivityForResult()
/onActivityResult()
undrequestPermissions()
/onRequestPermissionsResult()
in Fragment wurden eingestellt. Verwenden Sie die Activity Result APIs. (aosp/1290887) - Nicht funktionsgefährdende Änderung von Aktivität
1.2.0-alpha04
: Die MethodeprepareCall()
wurde inregisterForActivityResult()
umbenannt. (aosp/1278717)
Fehlerkorrekturen
- Das
getViewLifecycleOwner()
des Fragments wird jetzt beendet, bevoronSaveInstanceState()
aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, wird jetzt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, korrekt geändert. (b/153593580) - Ein
illegalStateException
beim Hinzufügen eines Fragments zur Ansichtshierarchie einerDialogFragment
mitFragmentContainerView
wurde korrigiert. (b/154366601) - Die
getDefaultViewModelProviderFactory()
-Methode für Fragmente stürzt nicht mehr ab, wenn Ihre Fragmente außerhalb einer Aktivität gehostet werden. (b/153762914)
Version 1.3.0-alpha03
1. April 2020
androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
und androidx.fragment:fragment-testing:1.3.0-alpha03
wurden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
prepareCall
-Methoden fürFragment
sind jetztfinal
. (b/152439361)
Fehlerkorrekturen
- Eine Regression wurde behoben, die bei Verwendung von
BottomSheetDialogFragment
in Fragment1.3.0-alpha02
eingeführt wurde. (b/151652127, aosp/1263328, aosp/1265163) - Ein Absturz wurde behoben, der nach einer Konfigurationsänderung bei Verwendung von
prepareCall
aus einem Fragment auftrat. (b/152137004) - Bei Verwendung von
setTargetFragment()
wurden Übergänge zu gemeinsam genutzten Elementen und Exits ignoriert. Das Problem wurde behoben. (b/152023196) - Von Fragment
1.2.4
: Die Fragment ProGuard-Regeln 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 ihr Ansichtslebenszyklus immer synchron sind. Dadurch kann beim Aufrufen vonobserve
entwederthis
oderviewLifecycleOwner
bedenkenlos verwendet werden. (b/151765086)
Änderungen bei Abhängigkeiten
- Fragmente hängen von Activity
1.2.0-alpha03
ab, das erhebliche Verbesserungen an der in Aktivität1.2.0-alpha02
eingeführten Activity Result API bietet.
Version 1.3.0-alpha02
18. März 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
und androidx.fragment:fragment-testing:1.3.0-alpha02
wurden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die in Aktivität
1.2.0-alpha02
eingeführteActivityResultRegistry
API wird nun unterstützt, um die AbläufestartActivityForResult()
+onActivityResult()
undrequestPermissions()
+onRequestPermissionsResult()
zu verarbeiten, ohne die 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 mit einem@LayoutRes
-Wert, der das Layout angibt, dasonCreateView()
standardmäßig aufblähen soll. (b/150327080)- Die Methode
onActivityCreated()
wurde eingestellt. Code, der die Ansicht des Fragments berührt, sollte inonViewCreated()
ausgeführt werden (der direkt voronActivityCreated()
aufgerufen wird) und anderer Initialisierungscode sollte sich inonCreate()
befinden. Damit du einen Callback erhältst, wenn deronCreate()
der Aktivität abgeschlossen ist, sollte eineLifeCycleObserver
imLifecycle
der Aktivität inonAttach()
registriert und entfernt werden, sobald deronCreate()
-Callback empfangen wird. (b/144309266)
Fehlerkorrekturen
- Aus Fragment
1.2.3
: Ein Fehler inDialogFragment
wurde behoben, der beim Aufrufen vongetLayoutInflater()
inonCreateDialog()
zuStackOverflowError
führte. (b/117894767, aosp/1258664) - Von Fragment
1.2.3
: Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169) - Aus Fragment
1.2.3
: Fehler mit falsch positiven Ergebnissen in derUseRequireInsteadOfGet
-Lint-Prüfung bei Verwendung eines lokalen Variablennamens behoben, der den Kotlin-Attributnamen verdeckt hat. (b/149891163) - Aus Fragment
1.2.3
:FragmentContainerView
gibt keinUnsupportedOperationException
mehr aus, wenn in der Layoutvorschau der falsche Konstruktor verwendet wird. (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
wurden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die im Lebenszyklus
2.3.0-alpha01
hinzugefügteViewTreeLifecycleOwner.get(View)
API wird nun unterstützt, sodass sieviewLifecycleOwner
des Fragments alsLifecycleOwner
für alle vononCreateView()
zurückgegebenen Ansichten zurückgibt. (aosp/1182955)
API-Änderungen
- Die Methode
setRetainInstance()
für Fragmente wurde eingestellt. Mit der Einführung von ViewModels steht Entwicklern eine spezielle API zur Beibehaltung des Status zur Verfügung, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Dies ermöglicht Entwicklern, ein normales, nicht beibehaltenes Fragment zu verwenden und den spezifischen Status, den sie beibehalten möchten, separat zu halten. Dadurch wird eine gemeinsame Quelle von Datenlecks vermieden und gleichzeitig die nützlichen Eigenschaften einer einzelnen Erstellung und des Löschens des beibehaltenen Status beibehalten (nämlich der Konstruktor desViewModel
- und desonCleared()
-Callbacks, den es erhält). (b/143911815) - Mit der Veröffentlichung von ViewPager2
1.0.0
wurden die KlassenFragmentPagerAdapter
undFragmentStatePagerAdapter
zur Interaktion mitViewPager
eingestellt. Weitere Informationen finden Sie unter Von ViewPager zu ViewPager2 migrieren. (b/145132715)
Fehlerkorrekturen
- Fragment ProGuard-Regeln behalten jetzt korrekt nur die
Fragment
-Standardklassen des Konstruktors bei, die verwendet werden, und nicht mehr 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 führen bei lokalen Variablen, die denselben Namen wie die verdeckten Kotlin-Attributnamen haben (z.B.view
). (b/149891163) FragmentContainerView
gibt keinUnsupportedOperationException
mehr aus, wenn die Layoutvorschau in Android Studio verwendet wird. (b/149707833)- Ein Problem wurde behoben, bei dem beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung gelöscht wurden. (b/145832397)
Version 1.2.5
Version 1.2.5
10. Juni 2020
androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
und androidx.fragment:fragment-testing:1.2.5
wurden veröffentlicht. Version 1.2.5 enthält diese Commits.
Fehlerkorrekturen
- Das
getViewLifecycleOwner()
des Fragments wird jetzt beendet, bevoronSaveInstanceState()
aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. Dies wurde zuvor in Fragment1.3.0-alpha04
veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, wird jetzt die Sichtbarkeit der Menüs, die von den untergeordneten Fragmenten bereitgestellt werden, korrekt geändert. Dies wurde zuvor in 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
wurden veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Die Fragment ProGuard-Regeln wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
- Die
FragmentLiveDataObserve
-Lint-Regel fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und ihr 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
wurden veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in
DialogFragment
behoben, der beim Aufrufen vongetLayoutInflater()
inonCreateDialog()
zu einemStackOverflowError
führte. (b/117894767, aosp/1258665) - Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, um sicherzustellen, dass nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
- Fehler mit falsch positiven Ergebnissen in der
UseRequireInsteadOfGet
-Lint-Prüfung bei Verwendung eines lokalen Variablennamens behoben, der den Kotlin-Attributnamen verdeckt hat, wurde behoben. (b/149891163) FragmentContainerView
gibt keinUnsupportedOperationException
mehr aus, weil in der Layoutvorschau der falsche Konstruktor 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
wurden veröffentlicht. Version 1.2.2 enthält diese Commits.
Neue Lint-Prüfungen
- Lint empfiehlt,
viewLifecycleOwner
alsLifecycleOwner
für Aufrufe vonOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
undonActivityCreated()
zu verwenden. (b/142117657) - Eine neue Lint-Prüfung wurde hinzugefügt, die bestätigt, dass Sie bei Verwendung des
fragment-testing
-Artefakts den richtigendebugImplementation
verwenden. (b/141500106) - Fragmente schlagen jetzt vor, für alle Fragment APIs, die sowohl ein
get
- als auch einrequire
-Äquivalent enthalten, die zugehörigenrequire___()
-Methoden für aussagekräftigere Fehlermeldungen anstelle voncheckNotNull(get___())
,requireNonNull(get___())
oderget___()!!
zu verwenden. (aosp/1202883)
Fehlerkorrekturen
- Die Fragment ProGuard-Dateien wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981).
- Die vorhandene Lint-Prüfung, die vorschlägt,
viewLifecycleOwner
zu verwenden, wennobserve
verwendet wird, um auch die Version derlivedata-ktx
-Erweiterungsmethode vonobserve
zu verarbeiten, wurde verbessert. (b/148996309) - Die Formatierung für viele Lint-Prüfungen wurde korrigiert (aosp/1157012).
Externe Beiträge
- Vielen Dank an Zac Sweers, dass Sie im Namen von Slack
require___()
Lint-Prüfungen eingereicht haben. (aosp/1202883)
Version 1.2.1
Version 1.2.1
5. Februar 2020
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
und androidx.fragment:fragment-testing:1.2.1
wurden veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Für Fragmente, die über die Methoden
add
undreplace
hinzugefügt wurden, die eineClass
-Instanz (oder die reifizierten Kotlin-Versionen) übernehmen, wird jetzt der Standardkonstruktor von ProGuard beibehalten. (b/148181315) FragmentStatePagerAdapter
undFragmentPagerAdapter
erfassen keine Ausnahmen mehr, die vonFragmentManager
beim Ausführen vonfinishUpdate()
ausgegeben werden. (aosp/1208711)- Ein Problem wurde behoben, bei dem
FragmentManager.findFragment()
nicht mit Fragmenten funktionierte, die über das<fragment>
-Tag hinzugefügt wurden. (b/147784323) - Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, erhalten jetzt im Layout immer einen Aufruf anonInflate()
voronCreate()
. (aosp/1215856) - Beim Aufrufen von
toString()
für eineFragmentManager
-Instanz wird keinNullPointerException
mehr ausgegeben, wenn die Aktivität bereits gelöscht ist. (b/148189412)
Abhängigkeitsänderungen
- Die Fragmente „
1.2.1
“ hängen jetzt von der Lifecycle-ViewModel-Speicherung2.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
wurden veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- FragmentContainerView: Der
FragmentContainerView
ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente, der die Verwendung vonFrameLayout
oder anderen Layouts ersetzt. Es unterstützt auch dieselbenclass
-,android:name
- und optionalenandroid:tag
wie das<fragment>
-Tag, verwendet jedoch eine normaleFragmentTransaction
, um dieses anfängliche Fragment hinzuzufügen, und nicht den von<fragment>
verwendeten benutzerdefinierten Codepfad. onDestroyView()
-Timing: Fragmente warten jetzt auf Beenden-Animationen, Framework-Übergänge und AndroidX-Übergänge (bei Verwendung von Übergang1.3.0
), bevor sieonDestroyView()
aufrufen.- Klassenbasiertes
add()
undreplace()
: Es wurden neue Überlastungen vonadd()
undreplace()
fürFragmentTransaction
hinzugefügt, dieClass<? extends Fragment>
und optionaleBundle
mit Argumenten akzeptieren. Diese Methoden verwenden IhrFragmentFactory
, um eine Instanz des hinzuzufügenden Fragments zu konstruieren. Kotlin-Erweiterungen mit reifizierten Typen (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
) wurdenfragment-ktx
ebenfalls hinzugefügt. - Lebenszyklus-ViewModel-Datenspeicher-Integration:
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die verwendet wird, wennby viewModels()
,by activityViewModels()
, derViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einem Fragment verwendet wird. - Neue Lint-Prüfungen: Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie
getViewLifecycleOwner()
verwenden, wenn SieLiveData
vononCreateView()
,onViewCreated()
oderonActivityCreated()
beobachten. - Einstellung von
getFragmentManager()
: Die MethodengetFragmentManager()
undrequireFragmentManager()
in Fragment wurden verworfen und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die den Nicht-NULL-Wert zurückgibt, derFragmentManager
zurückgegeben wird, dem das Fragment hinzugefügt wurde. Sie könnenisAdded()
verwenden, um festzustellen, ob der Aufruf sicher ist. - Einstellung von
FragmentManager.enableDebugLogging()
: Die statische MethodeFragmentManager.enableDebugLogging
wurde verworfen. FragmentManager akzeptiert jetztLog.isLoggable()
für das TagFragmentManager
, sodass Sie dasDEBUG
- oderVERBOSE
-Logging aktivieren können, ohne Ihre App neu zu kompilieren.
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
in einemFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt, sodass Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen müssen. (b/142601969) - Wenn du ein
NavHostFragment
mitclass
oderandroid:name
in XML mitFragmentContainerView
hinzufügst, kannst dufindNavController()
nicht inonCreate()
deiner Aktivitäten verwenden. (b/142847973)
Version 1.2.0-rc05
8. Januar 2020
androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
und androidx.fragment:fragment-testing:1.2.0-rc05
wurden veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression in Fragment
1.2.0-rc04
bei Verwendung des<fragment>
-Tags, die beim Löschen von Aktivitäten dazu führte, dassonViewCreated()
falsch aufgerufen wurde, wurde behoben. (b/146290333) - Bei Fragmenten, die mit dem
<fragment>
-Tag hinzugefügt werden, wird jetzt korrekt die Konfiguration ohne Konfiguration gelöscht, auch wenn sie sich nur gelegentlich im Layout befinden (d.h. nur im Querformat). Infolgedessen werden diese Fragmente jetzt korrekt zuCREATED
verschoben, auch wenn sie sich nicht in Ihrem Layout befinden. Sie werden nicht instanziiert, aber nie durch Lebenszyklusmethoden verschoben. (b/145769287)
Version 1.2.0-rc04
18. Dezember 2019
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
und androidx.fragment:fragment-testing:1.2.0-rc04
wurden veröffentlicht. Version 1.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die Animationen für
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
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
wurden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine unbeabsichtigte Änderung des Verhaltens behoben, durch die entfernte Fragmente weiterhin von
findFragmentById()
/findFragmentByTag()
zurückgegeben wurden, während ihre Exit-Animationen/Übergänge ausgeführt wurden. (b/143982969, aosp/1167585) - Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Elementen gestoppt, wenn die enthaltende Aktivität
onSaveInstanceState()
aufruft. (b/144380645) - Ansichten wurden nach dem Pop-up eines ausgeblendeten Fragments fälschlicherweise als
INVISIBLE
markiert. Dieses Problem wurde behoben. (b/70793925) - Übergänge von freigegebenen Fragmenten werden jetzt für Ansichten verarbeitet, die gedreht, skaliert usw. wurden (b/142835261).
Aktualisierungen der Dokumentation
- Die Dokumentation zur Einstellung von
setUserVisibleHint()
wurde klarer formuliert. (b/143897055) - Die Dokumentation für
setFragmentFactory()
undgetFragmentFactory()
wurde verbessert, um besser darauf hinzuweisen, dass sich das Festlegen vonFragmentFactory
auch auf untergeordnete FragmentManagers auswirkt. (aosp/1170095)
Abhängigkeitsänderungen
- Fragmente hängen jetzt von Lebenszyklus
2.2.0-rc03
, Lebenszyklus-ViewModel-Speicher1.0.0-rc03
und Aktivität1.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
wurden veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin verwendet LintFix zur Verwendung von
getViewLifecycleOwner()
bei der Beobachtung vonLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
(eingeführt in Fragment1.2.0-rc01
) jetzt die Syntax für den Kotlin-AttributzugriffviewLifecycleOwner
anstelle vongetViewLifecycleOwner()
. (aosp/1143821)
Version 1.2.0-rc01
23. Oktober 2019
androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
und androidx.fragment:fragment-testing:1.2.0-rc01
wurden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt jetzt nebenandroid:name
auch das Attributclass
, was die Funktionalität des<fragment>
-Tags widerspiegelt. (b/142722242)- Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie
getViewLifecycleOwner()
verwenden, wenn SieLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
beobachten. (b/137122478)
Fehlerkorrekturen
- Die Callbacks
onDismiss
undonCancel
fürDialogFragment
garantieren jetzt, dass der an sie übergebeneDialogInterface
nicht null ist und dassgetDialog()
bei ihrer Ausführung nicht null zurückgibt. (b/141974033) FragmentContainerView
fügt jetzt das durchclass
oderandroid:name
definierte Fragment als Teil der Inflation hinzu, sodassfindFragmentById()
undfindFragmentByTag()
sofort danach funktionieren. (b/142520327)- Ein
IllegalStateException
inFragmentContainerView
aufgrund des gespeicherten Status wurde behoben. (b/142580713) - Ein
UnsupportedOperationException
inFragmentContainerView
wurde behoben, wenn dieFragmentContainerView
-Klasse 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 aufbewahrt, sodass Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen müssen. Wir haben die Lint-Regel mit dem Vorschlag zum Wechsel zuFragmentContainerView
deaktiviert, bis das Problem überaapt2
behoben wurde. (b/142601969)
Version 1.2.0-beta02
11. Oktober 2019
androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
und androidx.fragment:fragment-testing:1.2.0-beta02
wurden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- „
onInflate()
“ von Fragment hat nicht die richtigen Attribute vonFragmentContainerView
empfangen, wodurch Fälle wieNavHostFragment
nicht funktionieren. (b/142421837)
Version 1.2.0-beta01
9. Oktober 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
und androidx.fragment:fragment-testing:1.2.0-beta01
wurden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt das Hinzufügen eines Anfangsfragments mit Unterstützung für die XML-Attributeandroid:name
undandroid:tag
. Im Gegensatz zum<fragment>
-Tag verwendetFragmentContainerView
eine normaleFragmentTransaction
, um das erste Fragment hinzuzufügen. Dadurch sind weitereFragmentTransaction
-Vorgänge für dasFragmentContainerView
möglich und die Verwendung von Ansichtsbindung für das Layout ermöglicht. (b/139830628 und b/141177981)- Fragmente enthalten jetzt eine Lint-Warnung, über die
<fragment>
durchFragmentContainerView
ersetzt werden kann. (b/139830056)
Fehlerkorrekturen
- Ein
ClassCastException
bei der Verwendung vonandroidx.transition
wurde behoben. (b/140680619) - Bei der Verwendung von Übergang
1.3.0-beta01
warten Fragmente jetzt darauf, dassandroidx.transition
Übergänge (zusätzlich zu den Framework-Übergängen und Animationen, die in Fragment1.2.0-alpha03
bzw. Fragment1.2.0-alpha02
festgelegt wurden) abgeschlossen sind, bevoronDestroyView()
gesendet wird. (aosp/1119841) - Wenn Sie die Umstellung
1.3.0-beta01
verwenden, brechen Fragmente jetztandroidx.transition
-Übergänge korrekt ab, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841) - Es wurde ein Problem in API 17 und niedriger behoben, wenn
androidx.transition
-Übergänge in der Stammansicht des Fragments bei Verwendung vonFragmentContainerView
verwendet wurden. (b/140361893) - Das
fragment-testing
-Artefakt hängt jetzt von AndroidX Test1.2.0
ab, wodurch eine Inkompatibilität mit der neuesten Espresso-Version 3.2.0 behoben wird. (b/139100149) - Verwendung von
Log.w
in FragmentManager entfernt. (aosp/1126468)
Bekannte Probleme
- Das
onInflate()
des Fragments erhält nicht die richtigen Attribute vonFragmentContainerView
, sodass Fälle wieNavHostFragment
nicht funktionieren. (b/142421837)
Version 1.2.0-alpha04
18. September 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
und androidx.fragment:fragment-testing:1.2.0-alpha04
wurden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
getFragmentManager()
undrequireFragmentManager()
fürFragment
wurden eingestellt und durch eine einzigegetParentFragmentManager()
-Methode ersetzt, die die Nicht-Null-FragmentManager
zurückgibt, der das Fragment hinzugefügt wurde. Sie könnenisAdded()
verwenden, um festzustellen, ob der Aufruf sicher ist. (b/140574496) - Die statische Methode
FragmentManager.enableDebugLogging
wurde eingestellt. FragmentManager unterstützt jetztLog.isLoggable()
für das TagFragmentManager
, sodass Sie entweder dasDEBUG
- oderVERBOSE
-Logging aktivieren können, ohne Ihre App neu zu kompilieren. (aosp/1116591)
Fehlerkorrekturen
- Fragmente werden jetzt ordnungsgemäß gelöscht, während die Beenden-Animationen auf anderen Fragmenten ausgeführt werden. (b/140574199)
- Ein Problem wurde behoben, bei dem Fragmente
Activity.findViewById()
aufrufen konnten, zuvor aber nicht. (aosp/1116431)
Version 1.2.0-alpha03
5. September 2019
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
und androidx.fragment:fragment-testing:1.2.0-alpha03
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
FragmentContainerView
ist jetztfinal
. (b/140133091)
Fehlerkorrekturen
FragmentContainerView
kehrt jetzt die Zeichenreihenfolge korrekt um, wenn Fragmente aus dem Back-Stack entfernt werden. (b/139104187)- Ein Problem wurde behoben, bei dem die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment per Pop-up übertragen und ein neues Fragment hinzugefügt wurde. (b/111659726)
- Fragmente warten jetzt, bis die Übergänge (zusätzlich zu den in Fragment
1.2.0-alpha02
behobenen Animationen) abgeschlossen sind, bevor sieonDestroyView()
senden. (b/138741697)
Version 1.2.0-alpha02
7. August 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
und androidx.fragment:fragment-testing:11.2.0-alpha02
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die standardmäßige Factory, die verwendet wird, wennby viewModels()
,by activityViewModels()
, derViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einemFragment
verwendet wird. (b/135716331)- Die Standardanimationen bei der Verwendung von
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_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
- Einführung von
FragmentContainerView
als dringend empfohlener Container für dynamisch hinzugefügte Fragmente, ersetzt die Verwendung vonFrameLayout
usw., da dadurch Probleme bei der z-Reihenfolge der Animation und an Fragmente gesendete Fenstereinsätze behoben werden. (b/37036000, aosp/985243, b/136494650) - Eine statische
FragmentManager.findFragment(View)
-Methode wurde hinzugefügt, um das enthaltende Fragment aus einer Ansicht abzurufen, die durch ein Fragment aufgebläht wurde. Infragment-ktx
ist auch eine Kotlin-Erweiterung verfügbar. (aosp/1090757) - Neue Überlastungen von
add()
undreplace()
aufFragmentTransaction
hinzugefügt, dieClass<? extends Fragment>
und optionalBundle
mit Argumenten erfordern. Diese Methoden verwenden IhrFragmentFactory
, um eine Instanz des hinzuzufügenden Fragments zu konstruieren. Kotlin-Erweiterungen, die reifizierte Typen verwenden (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
), wurden zufragment-ktx
hinzugefügt. (b/126124987) @MainThread
-Annotationen wurdenFragment
Lebenszyklus-Callbacks hinzugefügt. (b/127272564)- Die auf den Navigationspfad bezogenen APIs unter
FragmentTransaction
undFragmentManager.BackStackEntry
wurden eingestellt. (b/138252944) - Die Methode
setTransitionStyle
fürFragmentTransaction
wurde eingestellt. (aosp/1011537) - Viele der Methoden in
FragmentManager
sind nicht mehrabstract
.FragmentManager
selbst bleibtabstract
und sollte nicht direkt instanziiert oder erweitert werden. Es sollte weiterhin nur eine vorhandene Instanz vongetSupportFragmentManager()
,getChildFragmentManager()
usw. abgerufen werden.
Fehlerkorrekturen
- Ab Fragment
1.1.0-rc04
: Fragmente verhindern jetzt korrekt verschobene Übergänge bei Fragmenten, die per Pop-up entfernt wurden. (b/138251858) - Aus Fragment
1.1.0-rc03
: Ein Problem wurde behoben, bei dem durch das wiederholte Aufrufen vonpostponeEnterTransition()
mit einem Zeitlimit frühere Zeitüberschreitungen nicht abgebrochen wurden. (b/137797118) - Aus Fragment
1.1.0-rc02
: Ein Absturz inFragmentPagerAdapter
undFragmentStatePagerAdapter
beim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Fragmente warten jetzt, bis Animationen fertig sind, bevor sie
onDestroyView()
senden. (b/136110528) - Fragmentanimationen von untergeordneten Fragmenten und deren Nachfolger werden jetzt korrekt verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
- Ein
NullPointerException
wurde korrigiert, wenn Übergänge für gemeinsame Elemente verwendet und ein Pop-up- und Add-Vorgang kombiniert wurden. (b/120507394) - Für
IllegalStateException
s wurde eine Problemumgehung 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
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- FragmentManager ruft jetzt
requestApplyInsets()
auf, nachdem die Ansicht des Fragments angehängt wurde und direkt voronViewCreated()
. Dadurch wird sichergestellt, dass Ihre Ansicht immer die richtigen Einsätze enthält. (b/135945162)
Fehlerkorrekturen
- Ein
NullPointerException
beim Senden einesFragmentTransaction
, das vorreplace()
mitsetPrimaryNavigationFragment()
verwendet wurde, wurde behoben. (b/134673465)
Version 1.1.0
Version 1.1.0
5. September 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
und androidx.fragment:fragment-testing:1.1.0
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 1.0.0
- fragment-testing: Das Artefakt
fragment-testing
bietet eineFragmentScenario
-Klasse zum isolierten Testen eines Fragments. Weitere Informationen finden Sie in der Dokumentation zum Testen Ihrer App-Fragmente. - FragmentFactory: Sie können jetzt eine
FragmentFactory
für eineFragmentManager
festlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Dadurch entfällt die strenge Anforderung an einen No-Argument-Konstruktor. - Kotlin-Property-Delegaten für ViewModels: Das Artefakt
fragment-ktx
enthält jetzt zwei Kotlin-Property-Delegierte:by viewModels()
für den Zugriff auf ViewModels, die mit dem einzelnen Fragment verknüpft 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. Dies ersetzt das inzwischen eingestelltesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. - FragmentActivity LayoutId-Konstruktor: Abgeleitete Klassen von
FragmentActivity
können jetzt optional einen Konstruktor fürFragmentActivity
aufrufen, der eineR.layout
-ID annimmt. Dadurch wird das Layout angegeben, das als Inhaltsansicht festgelegt werden sollte, und zwar als Alternative zum Aufrufen vonsetContentView()
inonCreate()
. Dies ändert nichts an der Anforderung, dass Ihre Unterklasse über einen No-Argument-Konstruktor verfügen muss. - Fragment LayoutId-Konstruktor: Abgeleitete Klassen von
Fragment
können jetzt optional einen Konstruktor fürFragment
aufrufen, der eineR.layout
-ID annimmt. Dadurch wird das Layout angegeben, das für dieses Fragment als Alternative zum Überschreiben vononCreateView()
verwendet werden soll. Das überhöhte Layout kann inonViewCreated()
konfiguriert werden. - Mit Zeitlimit verschieben: Es wurde eine neue Überlastung von
postponeEnterTransition()
hinzugefügt, die ein Zeitlimit erfordert.
Version 1.1.0-rc04
7. August 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
und androidx.fragment:fragment-testing:1.1.0-rc04
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Fragmente brechen jetzt korrekt verschobene Übergänge für Fragmente ab. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
und androidx.fragment:fragment-testing:1.1.0-rc03
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Wenn
postponeEnterTransition()
mit einem Zeitlimit mehrmals aufgerufen wurde, wurden vorherige Zeitüberschreitungen nicht abgebrochen. Dieses Problem wurde behoben. (b/137797118)
Version 1.1.0-rc02
17. Juli 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
und androidx.fragment-testing:fragment:1.1.0-rc02
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Absturz in
FragmentPagerAdapter
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
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn
show()
- oderhide()
-Vorgänge während der Umstellung verwendet werden. (b/133385058) - Ein
NullPointerException
beim Senden einesFragmentTransaction
, das vorreplace()
mitsetPrimaryNavigationFragment()
verwendet wurde, wurde behoben. (b/134673465)
Version 1.1.0-beta01
5. Juni 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
und androidx.fragment:fragment-testing:1.1.0-beta01
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
androidx.lifecycle.Lifecycle
-Callbacks (insbesondere in Bezug aufSTARTED
,RESUMED
,PAUSED
,STOPPED
undDESTROYED
) für verschachtelte Fragmente sind jetzt korrekt verschachtelt. (b/133497591)OnBackPressedCallback
-Instanzen, die imonCreate()
eines Fragments registriert sind, haben jetzt Vorrang vor dem untergeordneten FragmentManager. (b/133175997)- Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
- Fragmentanimationen und -übergänge werden jetzt bei der Verwendung von
animateLayoutChanges="true"
ignoriert. Dadurch wird ein Problem behoben, bei dem Fragmente nicht ordnungsgemäß gelöscht wurden. (b/116257087)
Version 1.1.0-alpha09
16. Mai 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
und androidx.fragment:fragment-testing:1.1.0-alpha09
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Fragmente erhalten jetzt einen Callback an eine neue
onPrimaryNavigationFragmentChanged(boolean)
-Methode, wenn sich das Fragment der primären Navigation ändert. aosp/960857
Fehlerkorrekturen
- Von einem untergeordneten Fragment aufgeblähte Menüpunkte werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013
Version 1.1.0-alpha08
7. Mai 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
und androidx.fragment:fragment-testing:1.1.0-alpha08
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Dieser Release ist nicht mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Bitte aktualisiere auf die Einstellungen 1.1.0-alpha05, wenn du diese Version von Fragmenten verwendest.
Neue Funktionen
- Eine neue Überlastung von
postponeEnterTransition()
wurde hinzugefügt, die ein Zeitlimit erfordert. Danach ruft das Fragment automatischstartPostponedEnterTransition()
b/120803208 auf.
API-Änderungen
- Nicht funktionsgefährdende Änderung: Die zuvor verworfene Methode
FragmentFactory
instantiate
, für dieBundle
verwendet wurde, wurde entfernt. aosp/953856 - Nicht abwärtskompatible Ä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 durch
setMaxLifecycle()
begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Zustand erreichen. b/131557151 - Bei Verwendung von
setMaxLifecycle(Lifecycle.State.CREATED)
wird die Ansicht von Fragmenten ordnungsgemäß gelöscht. aosp/954180
Version 1.1.0-alpha07
25. April 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
und androidx.fragment:fragment-testing:1.1.0-alpha07
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()
für einFragmentTransaction
aufrufen. Dies ersetzt das inzwischen eingestelltesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)
API-Änderungen
moveToState(STARTED)
unterFragmentScenario
kann jetzt nur auf Geräten ab API 24 aufgerufen werden. (b/129880016)
Änderungen des Verhaltens
- Aufgrund von (b/129907905) erhalten Fragmente im Back-Stack keinen Callback von
onCreateView()
, wenn die Hosting-Aktivität neu erstellt wird.onCreateView()
wird jetzt nur noch aufgerufen, wenn das Fragment sichtbar wird (d.h., der Back-Stack wird geöffnet).
Fehlerkorrekturen
- Ein Problem wurde behoben, wenn ein
<fragment>
-Tag in XML und dercontentLayoutId
-Konstruktor vonFragmentActivity
oderAppCompatActivity
verwendet wurden. (b/129907905) - Ein Problem wurde behoben, bei dem Fragmente im Back-Stack nach einer Konfigurationsänderung nicht mindestens zu
CREATED
verschoben wurden, wodurch ViewModels und untergeordnete beibehaltene Fragmente nicht richtig entsorgt wurden. (b/129593351) - Ein Absturz in
restoreSaveState
wurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824) - Es wurden Probleme behoben, bei denen ein
OnBackPressedCallback
, das mit einem Fragmentlebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn dasFragmentManager
einen Back-Stack hätte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209) - Fragmente erzwingen
LAYER_TYPE_HARDWARE
nicht mehr für Animationen. Wenn Sie ausdrücklich eine Animation der Hardwareebene benötigen, legen Sie sie als Teil der Animation fest. (b/129486478)
Version 1.1.0-alpha06
3. April 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
und androidx.fragment:fragment-testing:1.1.0-alpha06
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Von FragmentManager ausgelöste Ausnahmen enthalten jetzt den Namen des Fragments in der Nachricht. (b/67759402)
API-Änderungen
Fragment
undFragmentActivity
enthalten jetzt einen zweiten Konstruktor, der einen@LayoutRes int
annimmt, der das vorherige Verhalten bei der Annotierung Ihrer Klasse mit@ContentView
ersetzt. Dieser Ansatz funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)- Das
onActivityResult()
von FragmentActivity ist jetzt korrekt als@CallSuper
gekennzeichnet. (b/127971684) - Die Methode
instantiate
von FragmentFactory, die ein Argument „Bundle“ verwendet, wurde eingestellt. Apps sollten die neueinstantiate
-Überlastung verwenden, die kein Bundle verwendet. (b/128836103) FragmentScenario
-Methoden sind jetzt korrekt mit@StyleRes
annotiert. (aosp/924193)FragmentTabHost
wurde eingestellt. (b/127971835)getThemedContext()
von FragmentActivity wurde entfernt. (aosp/934078)
Fehlerkorrekturen
- Eine Regression in 1.1.0-alpha05 wurde behoben, durch die das eingehende Fragment auf dem Bildschirm blinkte. (b/129405432)
- Ein Problem wurde behoben, bei dem das primäre Navigationsfragment nach einer Reihe von Vorgängen der Reihe nach „popBackStack+replace+popBackStack“ verloren ging. (b/124332597)
- Ein Problem wurde behoben, das bei der Verwendung von
@ContentView
-Konstruktoren in deiner Aktivität beim Wiederherstellen des Fragmentstatus aufgetreten ist. (b/127313094) - Die Logik von
setTargetFragment()
beim Ersetzen eines vorhandenen Zielfragments durch ein Fragment wurde korrigiert, das noch nicht an 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
wurden veröffentlicht. Die vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
@ContentView
-Anmerkungen werden jetzt im Cache gespeichert (b/123709449).
Änderungen des Verhaltens
- Beim Aufrufen von
remove()
,hide()
,show()
,detach()
undsetPrimaryNavigationFragment()
mit einem Fragment, das an einen anderen FragmentManager angehängt ist, wird jetzt einIllegalStateException
ausgelöst, statt einen Leerlauf auszuführen (aosp/904301).
Fehlerkorrekturen
onNewIntent
fürFragmentActivity
ist jetzt korrekt mit@CallSuper
gekennzeichnet (b/124120586)- Problem behoben, bei dem
onDismiss()
vonDialogFragment
bei Verwendung vongetDialog().dismiss()
odergetDialog().cancel()
zweimal aufgerufen wurde (b/126563750)
Version 1.1.0-alpha04
7. Februar 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
und androidx.fragment:fragment-testing 1.1.0-alpha04
wurden veröffentlicht.
Neue Funktionen
- Die
@ContentView
-Klassenannotation, mit der angegeben werden kann, welche Layout-XML-Datei als Alternative zum Überschreiben vononCreateView()
aufgebläht werden soll, wird nun unterstützt. Es wird empfohlen, zugehörige Arbeiten inonViewCreated()
anzusehen. (aosp/837619) fragment-testing
hängt jetzt von der stabilen Versionandroidx.test:core-ktx
1.1.0 ab (b/121209673)- Sie können jetzt
openActionBarOverflowOrOptionsMenu
mitFragmentScenario
verwenden, um von Fragment gehostete Optionsmenüs zu testen (b/121126668).
API-Änderungen
- Eine
requireArguments()
-Methode wurde hinzugefügt, die einen@NonNull Bundle
zurückgibt oder einenIllegalStateException
ausgibt (b/121196360). - Es wurde ein Hinweis hinzugefügt, dass
getLifecycle()
,getViewLifecycleOwner()
undgetViewLifecycleOwnerLiveData()
nicht überschrieben werden sollten und in einem zukünftigen Release als endgültig festgelegt werden. Bitte senden Sie eine Funktionsanfrage, wenn Sie diese Methode derzeit überschreiben. (aosp/880714) - Es wurde ein Hinweis hinzugefügt, dass
getViewModelStore()
nicht überschrieben werden sollte und in einem zukünftigen Release als endgültig festgelegt wird. Bitte senden Sie eine Funktionsanfrage, wenn Sie diese Methode derzeit überschreiben. (aosp/880713) - Ein Problem mit der Binärkompatibilität mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)
Fehlerkorrekturen
- Die Zielfragmente werden korrekt gelöscht, wenn Sie
null
ansetTargetFragment()
übergeben. (aosp/849969) - Ein Problem wurde behoben, bei dem Zielfragmente in oder nach
onDestroy()
manchmal nicht verfügbar waren. (b/122312935) - onDismiss() von DialogFragment wird jetzt vor
onDestroy()
aufgerufen. (aosp/874133) (aosp/890734)
Version 1.1.0-alpha03
17. Dezember 2018
Neue Funktionen
- Fragment implementiert jetzt
BundleSavedStateRegistryOwner
und hängt von der neu veröffentlichten SavedState-Bibliothek ab [aosp/824380]. - Es wurde ein
by activityViewModels
-Kotlin-Property-Delegater hinzugefügt, um ViewModels abzurufen, die mit der zugehörigen Aktivität verknüpft sind [b/119050253]. - Der Kotlin-Eigenschaftsdelegat
by viewModels
wurde erweitert, um eine optionale Lambda-Methode zum Abrufen desViewModelStoreOwner
zu verwenden, sodass Sie das übergeordnete Fragment oder eine andere benutzerdefinierteViewModelStoreOwner
mit Code wieval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253] übergeben können.
API-Änderungen
- Mit
FragmentScenario
können Sie jetzt ein Design wieTheme.AppCompat
[b/119054431] angeben. Das ist eine funktionsgefährdende Änderung. - Eine
requireView()
-Methode wurde hinzugefügt, die einen@NonNull View
zurückgibt oder einenIllegalStateException
ausgibt [b/120241368]. - Eine
requireParentFragment()
-Methode wurde hinzugefügt, die einen@NonNull Fragment
zurückgibt oder einenIllegalStateException
ausgibt [b/112103783].
Fehlerkorrekturen
- IllegalStateException behoben: Fehler beim Speichern des Status b/120814739
- Fragmente, die aus dem Status der gespeicherten Instanz wiederhergestellt werden, erhalten jetzt immer einen
Bundle
-Wert ungleich null [b/119794496] - Entfernte Fragmente verwenden ihr
Lifecycle
-Objekt nicht mehr, wenn sie wieder hinzugefügt werden [b/118880674].
Version 1.1.0-alpha02
3. Dezember 2018
Neue Funktionen
- Mit den Kotlin-Erweiterungen von FragmentSzenario können Sie jetzt ein Lambda als Alternative zum Übergeben einer
FragmentFactory
-Instanz zum Erstellen von Fragmenten verwenden. (aosp/812913)
Fehlerkorrekturen
- Es wurde eine IllegalStateException bei Verwendung verschachtelter Fragmente auf dem Back-Stack behoben (b/119256498).
- Absturz bei Verwendung von
FragmentScenario.recreate()
mit einemFragmentFactory
(aosp/820540) wurde behoben. - Es wurde ein Problem behoben, bei dem Zielfragmente nicht zugänglich waren, nachdem das Fragment entfernt wurde (aosp/807634).
Version 1.1.0-alpha01
5. November 2018
Dies ist die erste Version des Artefakts fragment-testing
und FragmentScenario
, die auf den androidx.test:core APIs aufbauen. Weitere Informationen finden Sie in der Dokumentation zu Fragmenttests.
Neue Funktionen
- Neue FragmentSzenario-Klasse zum isolierten Testen von Fragmenten.
- Sie können jetzt ein
FragmentFactory
für jedeFragmentManager
festlegen, um zu steuern, wie neue Fragmentinstanzen instanziiert werden. - Es wurde ein neuer Kotlin-Attribut-Delegate für
by viewModels()
zum Abrufen von ViewModels aus einem Fragment hinzugefügt. - Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt im
onStop()
eines Fragments abgebrochen.
API-Änderungen
- Die Anmerkungen zur Null-Zulässigkeit wurden über die Oberfläche der Fragment API erheblich erweitert.
Fehlerkorrekturen
- Problem beheben, bei dem Fragment-Vorgänge in LiveData fehlgeschlagen sind (b/77944637)
Bekannte Probleme
- Auf Zielfragmente kann nicht zugegriffen werden, nachdem ein Fragment aus FragmentManager entfernt wurde.
fragment-testing
hängt vonandroidx.test:core:1.0.0-beta01
und nicht der richtigenandroidx.test:core:1.0.0
ab.