Fragment
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
30. Oktober 2024 | 1.8.5 | - | – | - |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von Fragment hinzuzufügen, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Groovy
dependencies { def fragment_version = "1.8.5" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.5" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.8
Version 1.8.5
30. Oktober 2024
androidx.fragment:fragment-*:1.8.5
wird veröffentlicht. Version 1.8.5 enthält diese Commits.
Fehlerkorrekturen
- Ein
IllegalStateException
, das vonsaveBackStack
erst ausgelöst wurde, nachdem eine vorausschauende Zurück-Geste abgebrochen oder unterbrochen wurde, wurde behoben. (I3387d, b/342419080)
Version 1.8.4
2. Oktober 2024
androidx.fragment:fragment-*:1.8.4
wird veröffentlicht. Version 1.8.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem bei Verwendung von AndroidX-Übergängen Fragmente abstürzten, wenn die Rückwärtstaste des Systems schnell gedrückt oder die Wischgeste zum Zurückgehen schnell ausgeführt wurde. (Ibc038, b/364804225)
- Es wurde ein Problem in Fragmenten behoben, bei dem das Unterbrechen einer Bewegung zur Vervollständigung des Zurücks den Fragmentmanager in einen nicht definierten Zustand versetzt und sogar das falsche Fragment angezeigt wurde. (If82e2, b/338624457)
- Ein
UninitializedPropertyAccessException
inAndroidFragment
wurde behoben, wenn die Klasse, die von IhrerAndroidFragment
-Instanz verwendet wird, dynamisch ausgetauscht wurde. (I12dea)
Version 1.8.3
4. September 2024
androidx.fragment:fragment-*:1.8.3
wird veröffentlicht. Version 1.8.3 enthält diese Commits.
Fehlerkorrekturen
FragmentManager
berücksichtigt jetzt ausstehende Vorgänge korrekt, wenn die Geste „Zurückvorhersagen“ ausgeführt wird. Dadurch sollte verhindert werden, dass eine Systemwiederherstellung zu einerIndexOutOfBoundsException
führt. (I9ba32, b/342316801)AndroidFragment
stürzt nicht mehr ab, wenn es der Komposition hinzugefügt wird, während der Status der enthaltenen Aktivität/des enthaltenen Fragments bereits gespeichert ist. (I985e9, b/356643968)
Version 1.8.2
24. Juli 2024
androidx.fragment:fragment-*:1.8.2
wird veröffentlicht. Version 1.8.2 enthält diese Commits.
Fehlerkorrekturen
AndroidFragment
verarbeitet jetzt korrekt Fälle, in denen das übergeordnete Fragment im Back-Stack des Fragments abgelegt wird. Dadurch werden Probleme mit der Fehlermeldung „Keine Ansicht für ID“ beim Aufrufen dieses Fragments vermieden. (I94608)- Fragmente, die über die
FragmentTransaction.add
-Methode hinzugefügt werden und einViewGroup
enthalten, warten jetzt aufonContainerAvailable
, bevor sie mitonStart()
fortfahren. Das wirkt sich auf Nutzer dieser API aus, z. B. aufAndroidFragment
, die jetzt wartet, bis dieAndroidFragment
wieder in die Komposition eintritt, bevor sie sie durchonStart()
weiterleitet. (I94608)
Version 1.8.1
26. Juni 2024
androidx.fragment:fragment-*:1.8.1
wird veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Fragmente ohne Container sofort
DESTROYED
wurden, wenn eine vorweggenommene Rückwärtsgeste gestartet wurde. Jetzt bleiben sie im StatusCREATED
, bis die Geste abgeschlossen ist. (If6b83, b/345244539)
Version 1.8.0
12. Juni 2024
androidx.fragment:fragment-*:1.8.0
wird veröffentlicht. Version 1.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.7.0
- Das Artefakt
fragment-compose
enthält jetzt einAndroidFragment
-Composable
, mit dem Fragmente über den Klassennamen des Fragments zur Hierarchie „Compose“ hinzugefügt werden können. Der Status des Fragments wird automatisch gespeichert und wiederhergestellt. Dies sollte als direkter Ersatz für den zuvor empfohlenen Ansatz verwendet werden, bei dem ein Fragment mithilfe vonAndroidViewBinding
aufgebläht wird. - Der
onBackStackChangeCancelled
-Callback auf derOnBackStackChangedListener
-Benutzeroberfläche vonFragmentManager
wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManager
ausgelöst, was ihn dem Timing desonBackStackChangeCommitted
-Callbacks näher bringt.
Version 1.8.0-rc01
29. Mai 2024
androidx.fragment:fragment-*:1.8.0-rc01
wird veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der
onBackStackChangeCancelled
-Callback auf derFragmentManagers OnBackStackChangedListener
-Schnittstelle wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManager
ausgelöst und bewegt ihn gemäß dem Timing desonBackStackChangeCommitted
-Callbacks näher. (I5ebfb, b/332916112)
Version 1.8.0-beta01
14. Mai 2024
androidx.fragment:fragment-*:1.8.0-beta01
wird veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.7.1
: Die Vorhersagefunktion für die Rückwärtslaufzeit wird jetzt nur noch für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator oder einen suchbaren AndroidX-Übergang haben. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem schwarzen Bildschirm führte. (I43037, b/339169168)
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02
wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.7.0-rc02
: Es wurden Protokolle hinzugefügt, um anzugeben, warum die Ausführung fehlschlägt, wenn einesharedElement
ohne andere Übergänge festgelegt wird. (Iec48e) - Fragment
1.7.0-rc02
: Es wurde ein Fehler behoben, bei dem es zu einem Absturz kam, wenn einer Transaktion, bei der alle anderen Übergänge suchbar waren, ein nicht suchbares freigegebenes Element hinzugefügt wurde. Jetzt wird die Transaktion korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.8.0-alpha01
3. April 2024
androidx.fragment:fragment-*:1.8.0-alpha01
wurde veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Neue Funktionen
- Mit der neuen
AndroidFragment
Composable
können Sie der Compose-Hierarchie über den Namen der Fragmentklasse Fragmente hinzufügen. Damit wird der Status des Fragments automatisch gespeichert und wiederhergestellt. Diese kann als direkter Ersatz für die AndroidViewBindingComposable
verwendet werden.(b/312895363, Icf841)
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener
APIs wurde aktualisiert. Sie enthält jetzt Informationen dazu, wann sie aufgerufen werden und wie sie verwendet werden sollten. (I0bfd9)
Update der Abhängigkeiten
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7
Version 1.7.1
14. Mai 2024
androidx.fragment:fragment-*:1.7.1
wurde veröffentlicht. Version 1.7.1 enthält diese Commits.
Fehlerkorrekturen
- Die Vorhersagefunktion für Rückwärtssprünge wird jetzt nur noch für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator oder einen suchbaren AndroidX-Übergang haben. Dadurch wird ein Problem behoben, bei dem beim Abbrechen einer teilweise suchbaren Transaktion ein leerer Bildschirm angezeigt wurde. (I43037, b/339169168)
Version 1.7.0
1. Mai 2024
androidx.fragment:fragment-*:1.7.0
wird veröffentlicht. Version 1.7.0 enthält diese Commits.
Unterstützung für die vorweggenommene Geste zum Zurückgehen
- Fragmente unterstützen jetzt die Vorhersage der In-App-Navigation bei Verwendung von
Animator
oder AndroidX Transition 1.5.0. So können Nutzer mit der Zurück-Geste das vorherige Fragment anzeigen, indem sie nach deinem Animations-/Übergang suchen, bevor sie sich entscheiden, die Transaktion durch Abschließen der Geste zu speichern oder den Vorgang abzubrechen.
Transition System | XML-Ressource | Unterstützt den prädiktiven Rücken |
---|---|---|
Animation |
R.anim |
Nein |
Animator |
R.animator |
Ja |
Framework Transition |
R.transition |
Nein |
AndroidX Transition mit Transition 1.4.1 oder niedriger |
R.transition |
Nein |
AndroidX Transition mit Transition 1.5.0 |
R.transition |
Ja |
Wenn Sie nach der Aktivierung der Geste für die Vorhersage der Rückwärtsnavigation Probleme mit der Unterstützung in Fragments feststellen, erstellen Sie bitte ein Problem für Fragment und fügen Sie ein Beispielprojekt hinzu, in dem das Problem reproduziert werden kann. Sie können die Vorhersagefunktion für die Rückwärtsnavigation deaktivieren, indem Sie FragmentManager.enabledPredictiveBack(false)
in den onCreate()
Ihrer Aktivitäten eingeben.
FragmentManager.OnBackStackChangedListener()
bietet jetzt die Ereignisse onBackStackChangeProgressed()
und onBackStackChangeCancelled()
, um den voraussichtlichen Rücklauffortschritt bzw. abgebrochene Ereignisse zu empfangen.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose
-Artefakt erstellt, das sich auf die Unterstützung von Apps konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig auf Compose basierenden Architektur migrieren.
Die erste Funktion in diesem neuen Artefakt 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.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Version 1.7.0-rc02
17. April 2024
androidx.fragment:fragment-*:1.7.0-rc02
wird veröffentlicht. Version 1.7.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Es wurden Logs hinzugefügt, die angeben, warum das Festlegen einer
sharedElement
ohne weitere Umstellungen nicht ausgeführt werden kann. (Iec48e) - Ein Fehler wurde behoben, durch den es zu einem Absturz kam, wenn einer Transaktion, bei der alle anderen Übergänge suchbar waren, ein nicht suchbares freigegebenes Element hinzugefügt wurde. Jetzt wird die Transaktion korrekt als nicht suchbar betrachtet. (I18ccd)
Version 1.7.0-rc01
3. April 2024
androidx.fragment:fragment-*:1.7.0-rc01
wird veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Update der Abhängigkeiten
- Das Fragment hängt jetzt von Profile Installer 1.3.1 ab.
Version 1.7.0-beta01
20. März 2024
androidx.fragment:fragment-*:1.7.0-beta01
wird veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallback
ist jetzt in Kotlin geschrieben, sodass die Nullbarkeit des generischen Typs des Hosts mit der Nullbarkeit des Rückgabetyps vononGetHost()
übereinstimmt. (I40af5)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das ein Fragment, auf das eine Geste für die Vorhersage der Rückwärtsnavigation ausgeführt wurde, nicht zerstört wurde, wenn es sich nicht in einem Container befand. Das Fragment wird jetzt sofort in den Endzustand verschoben. (Ida0d9)
- Es wurde ein Problem in Fragmenten behoben, bei dem das Unterbrechen eingehender Übergänge mit einer vorausschauenden Zurück-Geste dazu zerstörte, in die Ansicht zu gelangen und einen leeren Bildschirm zu hinterlassen. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7. Februar 2024
androidx.fragment:fragment-*:1.7.0-alpha10
wird veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben, bei dem bei Verwendung der Unterstützung für die Vorhersage von Rückwärtsnavigationen in Fragmenten für
Animator
oder AndroidX-Übergängen von Fragmenten eineNullPointerException
vonhandleOnBackProgressed
geworfen wurde, wenn noch nie eineFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. (I7c835)
Version 1.7.0-alpha09
24. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha09
wird veröffentlicht. Version 1.7.0-alpha09 enthält diese Commits.
Fragment Compose-Artefakt
Es wurde ein neues fragment-compose
-Artefakt erstellt, das sich auf die Unterstützung von Apps konzentriert, die gerade von einer fragmentbasierten Architektur zu einer vollständig auf Compose basierenden Architektur migrieren.
Die erste Funktion in diesem neuen Artefakt ist eine content
-Erweiterungsmethode für Fragment
, mit der die Verwendung von Compose für die Benutzeroberfläche eines einzelnen Fragments vereinfacht wird. 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()
bietet jetzt die EreignisseonBackStackChangeProgressed()
undonBackStackChangeCancelled()
, um den voraussichtlichen Rücklauffortschritt bzw. abgebrochene Ereignisse zu empfangen. (214b87)
Bekanntes Problem
- Wenn die Fragment-Unterstützung für das vorausschauende Zurückgehen für
Animator
- oder AndroidX-Übergänge verwendet wird, geben Fragmente eineNullPointerException
vonhandleOnBackProgressed
aus, wenn noch nieFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. Wenn Sie einen Listener manuell hinzufügen, können Sie den Absturz umgehen. In der nächsten Version von Fragments wird es eine entsprechende Korrektur geben.
Version 1.7.0-alpha08
10. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha08
wird veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Aufräumen
- 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 veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein
NullPointerException
behoben, das durch das Festlegen eines Übergangs für ein freigegebenes Element und das Nichtfestlegen eines „enter/exitTransition“ verursacht wurde. (I8472b) - Von Fragment
1.6.2
: Wenn das Fragment einesFragmentContainerView
aufgebläht ist, kann auf seine Status wieFragmentManager
, Host und ID jetzt über denonInflate
-Callback zugegriffen werden. (I1e44c, b/307427423) - Aus Fragment
1.6.2
: Wenn Sie mitclearBackStack
eine Reihe von Fragmenten entfernen, werden dieViewModel
aller verschachtelten Fragmente jetzt gelöscht, wenn 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 veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Abhängigkeitsupdate
- Fragmente wurden aktualisiert und hängen jetzt von der neuen
animateToStart
API ab, die in Übergang1.5.0-alpha04
hinzugefügt wurde.
Version 1.7.0-alpha05
20. September 2023
androidx.fragment:fragment-*:1.7.0-alpha05
wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragmente unterstützen jetzt die Vorhersage der Rückwärtsnavigation bei Verwendung von AndroidX-Übergängen. So können Sie mit der Zurück-Geste zum vorherigen Fragment mit Ihrer benutzerdefinierten AndroidX-Übergang springen, bevor Sie sich entscheiden, die Transaktion über die abgeschlossene Geste zu bestätigen oder abzubrechen. Sie müssen die Version Transition
1.5.0-alpha03
verwenden, um diese Funktion zu aktivieren. (Ib49b4, b/285175724)
Bekannte Probleme
- Wenn Sie eine „Zurück“-Touch-Geste mit einem Übergang einmal abbrechen, wird der Übergang beim nächsten Start der „Zurück“-Touch-Geste nicht ausgeführt, was zu einem leeren Bildschirm führt. Das kann an einem Problem in der Übergangsbibliothek liegen. (b/300157785). Wenn dieses Problem auftritt, melden Sie es bitte bei Fragment und fügen Sie ein Beispielprojekt hinzu, in dem es reproduziert werden kann. Sie können die Vorhersagefunktion für die Rückwärtsnavigation deaktivieren, indem Sie
FragmentManager.enabledPredictiveBack(false)
in denonCreate()
Ihrer Aktivitäten eingeben.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04
wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem beim Abbrechen einer vorweggenommenen Zurück-Geste Fragmente nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
- Ein Regressionsfehler wurde behoben, durch den Animationen mit Übergängen ausgeführt werden konnten. (I59f36)
- Ein Problem wurde behoben, durch das bei der Verwendung der Funktion „Vorherige Seite“ mit Fragmenten ein Absturz verursacht wurde, wenn versucht wurde, zweimal hintereinander zum vorletzten Fragment im Rückstapel zurückzukehren. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03
wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit Fragmenten bei der Verwendung der Vorhersagefunktion für die Schaltfläche „Zurück“ wurde behoben. Dadurch wurde das erste Fragment im Rückstapel des Fragmentmanagers übersprungen und die Aktivität beendet, wenn die Schaltfläche „Zurück“ über die Navigation mit drei Schaltflächen oder die Vorhersagefunktion für die Schaltfläche „Zurück“ verwendet wurde. (I0664b, b/295231788)
Version 1.7.0-alpha02
9. August 2023
androidx.fragment:fragment-*:1.7.0-alpha02
wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie Fragmente mit vorausschauenden Zurück-Gesten ab API 34 verwenden und ein Übergangssystem verwenden, das keine Suche (
Animations
,Transitions
) oder gar keine Übergänge unterstützt, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor die Zurück-Aktion ausgeführt wird. (I8100c)
Version 1.7.0-alpha01
7. Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01
wird veröffentlicht. Diese Version wird in einem internen Zweig entwickelt.
Neue Funktionen
- Fragmente unterstützen jetzt bei der Verwendung von
Animator
die Vorhersage in der App. So kannst du die Zurück-Touch-Geste verwenden, um das vorherige Fragment mit deinem benutzerdefinierten Animator zu sehen, bevor du dich entscheidest, die Transaktion entweder mit der abgeschlossenen Bewegung zu bestätigen oder abzubrechen. Sie können dieses neue Verhalten auch deaktivieren, indem Sie die experimentelle FunktionenablePredictiveBack()
verwenden undfalse
übergeben.
Version 1.6
Version 1.6.2
1. November 2023
androidx.fragment:fragment-*:1.6.2
wird veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment einer
FragmentContainerView
maximiert wird, sind ihre Status wieFragmentManager
, Host und id jetzt imonInflate
-Callback verfügbar. (I1e44c, b/307427423) - Wenn Sie mit
clearBackStack
mehrere Fragmente entfernen, wird jetzt auch dasViewModel
eines verschachtelten Fragments gelöscht, wenn dasViewModels
des übergeordneten Fragments gelöscht wird. (I6d83c, b/296173018)
Version 1.6.1
26. Juli 2023
androidx.fragment:fragment-*:1.6.1
wird veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das der gespeicherte Status, der gespeichert wurde, als die Aktivität angehalten, aber nicht zerstört wurde, auch dann fälschlicherweise im Cache gespeichert wurde, wenn die Fragmentinstanz wieder in den Status
RESUMED
versetzt wurde. Dadurch wird der im Cache gespeicherte Status wiederverwendet, wenn sich diese Fragmentinstanz im Backstack befindet, wenn Sie die Multiple Back Stacks API zum Speichern und Wiederherstellen dieses Fragments verwenden. (I71288, b/246289075)
Abhängigkeitsupdate
- Das Fragment hängt jetzt von Activity 1.7.2 ab. Dadurch wird ein Problem behoben, bei dem Kotlin-Nutzer
ComponentDialog
nicht ohne explizite Abhängigkeit von Activity erweitern konnten. (b/287509323)
Version 1.6.0
7. Juni 2023
androidx.fragment:fragment-*:1.6.0
wurde veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Der gespeicherte Status von
Fragment
s wurde vollständig in den Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser wird jetzt immer in einemBundle
gespeichert, über das genau ermittelt werden kann, woher der Status eines Fragments stammt. - Die
FragmentManager.OnBackStackChangedListener
-Schnittstelle wurde um zwei zusätzliche Rückrufe vononBackStackChangeStarted
undonBackStackChangeCommitted
erweitert, die mit jederFragment
aufgerufen werden, kurz bevor sie dem Fragment-Backstack hinzugefügt oder daraus entfernt werden bzw. kurz nach dem Commit der Transaktion. FragmentStrictMode
hat eine neueWrongNestedHierarchyViolation
hinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht derchildFragmentManager
des übergeordneten Elements hinzugefügt wurde.- Die
Fragment
- undFragmentManager
-APIs, die einenIntent
- oderIntentSender
-Wert annehmen, sind jetzt korrekt mit@NonNull
annotiert, um das Übergeben eines Nullwerts zu verhindern. Ein Nullwert würde immer sofort zum Absturz der jeweiligen Android-Framework-APIs führen, die von diesen Methoden aufgerufen werden. DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendenComponentDialog
.- 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. Im
fragment-testing-manifest
-Artefakt werden die Manifesteinträge vom Rest der Komponenten für den Fragmenttest getrennt. Das bedeutet, dass Sie Folgendes tun können:debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen
fragment-testing
undandroidx.test
vermieden.
Version 1.6.0-rc01
10. Mai 2023
androidx.fragment:fragment-*:1.6.0-rc01
wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das
ActivityResult
mit dem falschen Anfragecode gesendet wurden, wenn mehrerestartActivityForResult
-Anfragen nacheinander gesendet wurden. (If0b9d, b/249519359) - Ein Problem wurde behoben, bei dem die
onBackStackChangeListener
-Callbacks für Transaktionen gesendet wurden, die den Backstack nicht tatsächlich geändert haben, wenn sie mit Transaktionen vermischt wurden, die dies tun. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19. April 2023
androidx.fragment:fragment-*:1.6.0-beta01
wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransition
mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzen, wird es nicht mehr geleaked. (I2ec7d, b/276375110) - Mit den neuen
onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks wird ein Fragment jetzt nur noch einmal gesendet, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)
Version 1.6.0-alpha09
5. April 2023
androidx.fragment:fragment-*:1.6.0-alpha09
wird veröffentlicht. Version 1.6.0-alpha09 enthält diese Commits.
API-Änderungen
DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendeComponentDialog
. (I022e3, b/234274777)- Die Fragment-APIs
commitNow()
,executePendingTransactions()
undpopBackStackImmediate()
wurden mit@MainThread
annotiert. Das bedeutet, dass jetzt alle Build-Fehler geworfen werden, wenn sie nicht vom Hauptthread aufgerufen werden, anstatt bei der Laufzeit zu scheitern. (Ic9665, b/236538905)
Fehlerkorrekturen
- Es wurde ein Fehler in
FragmentManager
behoben, durch den das Speichern und Wiederherstellen im selben Frame zu einem Absturz führen konnte. (Ib36af, b/246519668) OnBackStackChangedListener
-,onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks werden jetzt nur ausgeführt, wenn sich derFragmentManager
-Zurückstapel ändert. (I66055, b/274788957)
Version 1.6.0-alpha08
22. März 2023
androidx.fragment:fragment-*:1.6.0-alpha08
wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Der Zeitpunkt des
OnBackStackChangedListener.onBackStackChangeCommited
-Callbacks wurde angepasst, damit er vor Fragmentvorgängen ausgeführt wird. So wird sichergestellt, dass dem Rückruf niemals ein nicht verbundenes Fragment übergeben wird. (I66a76, b/273568280)
Fehlerkorrekturen
- Fragment
1.5.6
: Es wurde ein Problem behoben, durch das der Aufruf vonclearFragmentResultListener
in einersetFragmentResultListener
nicht funktionierte, wenn dieLifecycle
bereitsSTARTED
war und ein Ergebnis bereits verfügbar war. (If7458)
Aktualisierung der 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 veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.5.6
: Es wurde ein Problem behoben, durch das das Menü der Aktivität ungültig wurde, wenn ein Fragment entfernt wurde, unabhängig davon, ob es Menüpunkte hinzugefügt hatte oder nicht. (50f098, b/244336571)
Version 1.6.0-alpha06
22. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha06
wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Verhaltensänderung
- Der neue
onBackStackChangedStarted
-Callback imonBackStackChangedListener
vonFragmentManager
wird ausgeführt, bevor Fragmente in ihren Zielstatus verschoben werden. (I34726)
Version 1.6.0-alpha05
8. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha05
wird veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener
-Benutzeroberfläche bietet jetzt zwei zusätzliche Rückruffunktionen,onBackStackChangeStarted
undonBackStackChangeCommitted
, die zusätzliche Informationen und Steuerelemente bei Änderungen im Backstack derFragmentManager
ermöglichen. (Ib7ce5, b/238686802)
API-Änderungen
- Die APIs
Fragment
undFragmentManager
, die einIntent
oderIntentSender
verwenden, sind jetzt korrekt mit@NonNull
annotiert, um zu verhindern, dass ein Nullwert als Nullwert übergeben wird, da die entsprechenden Android-Framework-APIs, bei denen diese Methoden aufgerufen werden, immer sofort zum Absturz gebracht würden. (I06fd4)
Version 1.6.0-alpha04
7. Dezember 2022
androidx.fragment:fragment-*:1.6.0-alpha04
wird veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
hat eine neueWrongNestedHierarchyViolation
hinzugefügt, die erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht derchildFragmentManager
des übergeordneten Elements hinzugefügt wurde. (I72521, b/249299268)
Änderungen im Verhalten
- Fragmente werden jetzt in ihren
SavedStateRegistry
-Zustand voronAttach()
wiederhergestellt, damit sie über alle aufsteigenden Lebenszyklusmethoden verfügbar sind. (I1e2b1)
API-Änderungen
- Im
fragment-testing-manifest
-Artefakt werden die Manifesteinträge vom Rest der Komponenten für Fragmenttests getrennt. Das bedeutet, dass Sie Folgendes tun können:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing
und androidx.test
vermieden.(I8e534, b/128612536)
Fehlerkorrekturen
- Fragment
1.5.5
: In Fragmenten wird der StatusViewModel
nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (I10d2b, b/253546214)
Version 1.6.0-alpha03
5. Oktober 2022
androidx.fragment:fragment:1.6.0-alpha03
, androidx.fragment:fragment-ktx:1.6.0-alpha03
und androidx.fragment:fragment-testing:1.6.0-alpha03
werden losgelassen. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Klassen, die
DialogFragment
erweitern, müssen jetzt in ihrenonDismiss()
-Überschreibungen super aufrufen. (I14798, b/238928865)
Fehlerkorrekturen
- Wir haben Fehler behoben, die durch die Integration der neuen Rückrufschnittstellen für Anbieter (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) verursacht wurden. So erhalten Fragmente jetzt immer die richtigen Rückrufe. (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
werden losgelassen. Version 1.6.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.5.2
: Es wurde ein Problem behoben, bei dem die gleichzeitige Ausführung einerpopBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass in den austretenden Fragmenten die falscheAnimation
/Animator
ausgeführt wurde. (Ib1c07, b/214835303)
Version 1.6.0-alpha01
27. Juli 2022
androidx.fragment:fragment:1.6.0-alpha01
, androidx.fragment:fragment-ktx:1.6.0-alpha01
und androidx.fragment:fragment-testing:1.6.0-alpha01
werden losgelassen. Version 1.6.0-alpha01 enthält diese Commits.
Verhaltensänderungen
- Der gespeicherte Status von
Fragment
s wurde vollständig in den Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser wird jetzt immer in einemBundle
gespeichert, über das genau ermittelt werden kann, woher der Status eines Fragments stammt. (b/207158202)
Fehlerkorrekturen
- Aus Fragment
1.5.1
: Behebung einer Regression imDialogFragmentCallbacksDetector
, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Aktualisierung der Abhängigkeit
- 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
werden losgelassen. Version 1.5.7 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie
postponeEnterTransition
mit einem Zeitlimit verwenden und das verschobene Fragment dann ersetzen, wird es nicht mehr geleaked. (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
werden losgelassen. Version 1.5.6 enthält diese Commits.
Fehlerkorrekturen
- Das Problem, bei dem das Entfernen eines Fragments, unabhängig davon, ob es Menüelemente hinzugefügt hat, ungültig wurde, hat das Menü der Aktivität ungültig gemacht. Dieses Problem wurde behoben. (50f098, b/244336571)
- Ein Problem wurde behoben, durch das der Aufruf von
clearFragmentResultListener
in einersetFragmentResultListener
nicht funktionierte, 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
- Der Status
ViewModel
wird in Fragmenten nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichtsregistrierung gespeichert. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
und androidx.fragment:fragment-testing:1.5.4
werden losgelassen. Version 1.5.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem bei Verwendung einer benutzerdefinierten
FragmentController
mit einem Host, der keine Anbieter-Callback-Schnittstelle (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) implementiert, und Aufrufen der veralteten Dispatch-Funktion keine Weiterleitung an untergeordnete Fragmente erfolgte. (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
werden losgelassen. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den Fragmente im Backstack
onMultiWindowModeChanged()
-,onPictureInPictureModeChanged()
-,onLowMemory()
- undonConfigurationChanged()
-Callbacks erhielten. (I34581, I8dfe6, b/242570955) - Verschachtelte untergeordnete Fragmente erhalten nicht mehr mehrere
onMultiWindowModeChanged()
-,onPictureInPictureModeChanged()
-,onLowMemory()
- oderonConfigurationChanged()
-Callbacks. (I690b3, Id0096, If9d6b, I2cba2)
Version 1.5.2
10. August 2022
androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
und androidx.fragment:fragment-testing:1.5.2
wurden veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem beim gleichzeitigen Ausführen einer
popBackStack()
- und einerreplace()
-Transaktion in den austretenden Fragmenten möglicherweise die falscheAnimation
/Animator
ausgeführt wurde. (Ib1c07, b/214835303)
Version 1.5.1
27. Juli 2022
androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
und androidx.fragment:fragment-testing:1.5.1
wurden veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung einer Regression in der
DialogFragmentCallbacksDetector
, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zu einem Absturz von Lint führte. (b/237567009)
Update der Abhängigkeiten
- Die Fragmentbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Id204c) - Die Fragmentbibliothek hängt jetzt von 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
werden losgelassen. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- Integration von CreationExtras:
Fragment
kann jetzt über dieCreationExtras
von Lifecycle2.5.0
einen zustandslosenViewModelProvider.Factory
bereitstellen. - Integration von Komponentendialogen:
DialogFragment
verwendet jetztComponentDialog
über Aktivität1.5.0
als Standarddialog, der vononCreateDialog()
zurückgegeben wird. - Neugestaltung des gespeicherten Instanzstatus: Bei Fragmenten wird die Art und Weise geändert, wie der Instanzstatus gespeichert wird. So soll klar erkennbar sein, welcher Status im Fragment gespeichert wurde und woher er stammt. Zu den aktuellen Änderungen gehören:
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einerBundle
, anstatt direkt in einer benutzerdefiniertenParcelable
.- Ergebnisse, die über die
Fragment Result APIs
festgelegt wurden und noch nicht gesendet wurden, werden jetzt getrennt vom internen Status derFragmentManager
gespeichert. - Der Status, der mit jedem einzelnen Fragment verknüpft ist, wird jetzt getrennt vom internen Status der
FragmentManager
gespeichert. So kannst du den gespeicherten Status eines einzelnen Fragments mit den eindeutigen IDs in denFragment
-Debug-Logs in Beziehung setzen.
Weitere Änderungen
FragmentStrictMode
bietet jetzt die Möglichkeit für private Drittanbieter-Fragmente, bestimmte Strafen bei Verstößen zu 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 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
werden losgelassen. Version 1.5.0-rc01 enthält diese Commits.
Refactoring des gespeicherten Instanzstatus
- Der dem einzelnen Fragment zugeordnete Status wird jetzt getrennt vom internen Status der
FragmentManager
gespeichert. So können Sie den gespeicherten Status eines einzelnen Fragments mit den eindeutigen IDs in den Fragment-Debug-Logs in Beziehung setzen. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
und androidx.fragment:fragment-testing:1.5.0-beta01
werden losgelassen. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragment
hat eine neuedismissNow
-Methode hinzugefügt, diecommitNow
zur Parität mit dershowNow
-Funktion verwendet. Dadurch wirdDialog
nicht sofort geschlossen, sondern nur der Status vonFragmentManager
synchron aktualisiert. (I15c36, b/72644830)
Refactoring des gespeicherten Instanzstatus
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einerBundle
, anstatt direkt in einer benutzerdefiniertenParcelable
. Dies ist der erste Schritt, um mehr Transparenz darüber zu schaffen, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)- Ergebnisse, die über die Fragment Result APIs festgelegt wurden und noch nicht gesendet wurden, werden jetzt getrennt vom internen Status der
FragmentManager
gespeichert. So können Sie besser nachvollziehen, welche Ergebnisse im Rahmen des gespeicherten Instanzstatus gespeichert werden. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6. April 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
und androidx.fragment:fragment-testing:1.5.0-alpha05
wurden veröffentlicht. Version 1.5.0-alpha05 enthält diese Commits.
API-Änderungen
setHasOptionsMenu()
vonFragment
wurde eingestellt. Zum Verwalten von Menüs und den zugehörigen Menüelementen sollten stattdessen die neuen APIs für Menüs gemäß den Versionshinweisen zu 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 die
ActionBar
Ihrer Aktivität wurden eingestellt, da sie Ihr Fragment eng mit Ihrer Aktivität verknüpfen und nicht einzeln getestet werden können. Die in Aktivität1.4.0-alpha01
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste API-Oberfläche, die von Fragmenten verwendet werden sollte. (I50a59, I20758)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einerSavedStateRegistryOwner
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
werden losgelassen. 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)
Verhaltensänderungen
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
werden losgelassen. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Mit
FragmentStrictMode
können private Drittanbieter-Fragmente jetzt bestimmte Strafen für Verstöße umgehen, indem sieallowViolation()
mit dem Klassennamen verwenden. (I8f678)
Version 1.5.0-alpha01
26. Januar 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
und androidx.fragment:fragment-testing:1.5.0-alpha01
werden losgelassen. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragment
kann jetzt mit ViewModel CreationExtras verwendet werden, die im Rahmen von Lifecycle2.5.0-alpha01
eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Ab Fragment
1.4.1
:FragmentContainerView
löst keine ungültige Statusausnahme mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140) - Fragment
1.4.1
: Wenn du ein benutzerdefiniertesownerProducer
-Lambda mit derby viewModels()
-Lazily-Funktion verwendest, wird jetzt diedefaultViewModelProviderFactory
dieses Eigentümers verwendet, wenn kein benutzerdefiniertesViewModelProvider.Factory
angegeben ist, anstatt immer die Fabrik des Fragments zu verwenden. (I56170, b/214106513) - Ein Absturz beim erstmaligen Zugriff auf eine
ViewModel
über einenregisterForActivityResult()
-Callback einerFragment
wurde behoben. (IEa2b3)
Version 1.4
Version 1.4.1
26. Januar 2022
androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
und androidx.fragment:fragment-testing:1.4.1
werden losgelassen. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
FragmentContainerView
löst keine Ausnahme für einen ungültigen Status mehr aus, wenn aus XML generierte Ansichts-IDs negative Werte haben. (Ic185b, b/213086140)- Wenn du ein benutzerdefiniertes
ownerProducer
-Lambda mit der Lazy-Funktionby viewModels()
verwendest, wird jetzt diedefaultViewModelProviderFactory
dieses Eigentümers verwendet, wenn kein benutzerdefiniertesViewModelProvider.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
werden losgelassen. 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 App oder die von Ihnen verwendeten Bibliotheken keine veralteten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Protokollnachricht drucken, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. DieFragmentStrictMode.Policy
, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann über die neue MethodesetStrictModePolicy()
auf einemFragmentManager
festgelegt werden. Diese Richtlinie gilt für dieseFragmentManager
und mittelbar für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Weitere Informationen finden Sie unter StrictMode für Fragmente. FragmentContainerView
bietet jetzt die MethodegetFragment()
, die das Fragment zurückgibt, das dem Container zuletzt hinzugefügt wurde. Dies verwendet dieselbe Logik wiefindFragmentById()
mit der ID desFragmentContainerView
, ermöglicht aber eine Verkettung des Aufrufs.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
implementiert jetztCloseable
, sodass Sie es mit deruse
-Methode oder try-with-resources von Kotlin verwenden können.Das Attribut
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
wurde hinzugefügt, um anzugeben, ob die Standardanimation für den Aktivitätsübergang aus Ihrem Design im 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
Der FragmentManager
verwaltet einen Backstack aus Fragmenttransaktionen, die addToBackStack()
verwendet haben. Auf diese Weise können Sie diese Transaktionen per Pop-up übertragen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
Diese Version erweitert diese Mechanismen um drei neue FragmentManager
APIs: saveBackStack(String name)
, restoreBackStack(String name)
und clearBackStack(String name)
. Diese APIs verwenden dieselbe name
wie addToBackStack()
, um den Status der FragmentTransaction
und den Status jedes Fragments zu speichern, das in diesen Transaktionen hinzugefügt wurde. So können Sie diese Transaktionen und ihre Fragmente später mit dem ursprünglichen Status wiederherstellen. Auf diese Weise können Sie effektiv zwischen mehreren Back Stacks hin- und herwechseln, indem Sie den aktuellen Back Stack speichern und einen gespeicherten Back Stack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
, da es asynchron ist und dazu führt, dass alle Fragmenttransaktionen zurück zu diesem bestimmten Namen rückgängig gemacht („popped“) und alle hinzugefügten Fragmente zerstört und entfernt werden. Es unterscheidet sich jedoch in einigen wichtigen Punkten:
saveBackStack()
ist immer inklusiv.- Im Gegensatz zu
popBackStack()
, bei dem alle Transaktionen im Backstack an die Oberfläche gebracht werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Nullname angegeben wird, geschieht beisaveBackStack()
nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. AlleViewModel
-Instanzen, die diesen Fragmenten zugeordnet sind, bleiben erhalten (undonCleared()
wird nicht für sie aufgerufen).
Die Fragmenttransaktionen, die mit saveBackStack()
verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich geschlossen sein, d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieses Transaktionssatzes verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Backstack vorgenommen wurden.
- Kein gespeichertes Fragment darf ein in der Navigationsleiste gespeichertes Fragment sein oder ein solches Fragment in seinem übergeordneten Satz von untergeordneten Fragmenten enthalten, damit die
FragmentManager
nach dem Speichern des Backstacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack()
, restoreBackStack()
und clearBackStack()
, die einen zuvor gespeicherten Back Stack wiederherstellen bzw. einen zuvor gespeicherten Back Stack löschen, tun beide nichts, wenn saveBackStack()
nicht zuvor mit demselben Namen aufgerufen wurde.
Weitere Informationen finden Sie unter Mehrere Backstacks: Ein detaillierter Blick.
Version 1.4.0-rc01
3. November 2021
androidx.fragment:fragment:1.4.0-rc01
wurde ohne Änderungen gegenüber Fragment 1.4.0-beta01 veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
Version 1.4.0-beta01
27. Oktober 2021
androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
und androidx.fragment:fragment-testing:1.4.0-beta01
werden losgelassen. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Übergeordnete Fragmente senden jetzt
onHiddenChanged()
in ihrer gesamten Hierarchie ab, bevor ein eigener Callback gestartet wird. (Iedc20, b/77504618) - Die Tastatur wird jetzt automatisch geschlossen, wenn von einem Fragment mit geöffneter Tastatur zu einem Fragment mit Recycler-Ansicht gewechselt wird. (I8b842, b/196852211)
DialogFragment
verwendet jetztsetReorderingAllowed(true)
für alle Transaktionen, die beim Aufrufen vonshow()
,showNow()
oderdismiss()
erstellt werden. (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.
Fussel
- Die
DetachAndAttachFragmentInSameFragmentTransaction
-Lint-Warnung wurde hinzugefügt, um zu erkennen, wenn sowohldetach()
als auchattach()
auf derselbenFragment
in derselbenFragmentTransaction
aufgerufen werden. Da sich diese komplementären Vorgänge in derselben Transaktion gegenseitig aufheben, müssen sie in separate Transaktionen aufgeteilt werden, damit sie etwas bewirken. (aosp/1832956, b/200867930) - Der
FragmentAddMenuProvider
-Lint-Fehler wurde hinzugefügt, um die Verwendung des Fragment-Lebenszyklus im Fragment-Ansichts-Lebenszyklus bei Verwendung deraddMenuProvider
API vonMenuHost
zu korrigieren. (aosp/1830457, b/200326272)
Aktualisierungen der Dokumentation
- Die Nachricht zur Einstellung von APIs, die jetzt von den Activity Result APIs (
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
undonRequestPermissionsResult
) verarbeitet werden, wurde um weitere Details erweitert. (cce80f) - Die Mitteilung zur Einstellung von
onActivityCreated()
fürFragment
undDialogFragment
wurde um weitere Details ergänzt. (224db4)
Version 1.4.0-alpha09
15. September 2021
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
und androidx.fragment:fragment-testing:1.4.0-alpha09
werden losgelassen. Version 1.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
clearBackStack(name)
aufrufen, um alle zuvor mitsaveBackStack(name)
gespeicherten Status zu löschen. (I70cd7)
API-Änderungen
- Die Klasse
FragmentContainerView
wurde in Kotlin neu geschrieben, damit die FunktiongetFragment
die Nullbarkeit korrekt berücksichtigt. (If694a, b/189629145) - FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Status eines Fragments, das mit
setReorderingAllowed(true)
hinzugefügt und dann sofort entfernt wurde, bevor ausstehende Transaktionen ausgeführt wurden, nicht ordnungsgemäß bereinigt wurde. (I8ccb8)
Version 1.4.0-alpha08
1. September 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
und androidx.fragment:fragment-testing:1.4.0-alpha08
werden losgelassen. Version 1.4.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Die
UseRequireInsteadOfGet
-Lint-Prüfung wurde verbessert, um redundante Klammern besser zu behandeln. (I2d865) - Die Lint-Prüfung für
UseGetLayoutInflater
wurde zur Bearbeitung zusätzlicher Grenzfälle verbessert. (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
wurden ohne nennenswerte Änderungen veröffentlicht. Version 1.4.0-alpha07 enthält diese Commits.
Version 1.4.0-alpha06
4. August 2021
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
und androidx.fragment:fragment-testing:1.4.0-alpha06
werden losgelassen. Version 1.4.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit mehreren Rückstapeln wurde behoben, bei dem beim schnellen Wechseln zwischen Rückstapeln ein
IllegalStateException
angezeigt wurde, während eineFragmentTransaction
wiederhergestellt wurde, oder eine zweite Kopie eines Fragments angezeigt wurde. (I9039f) - Ein Problem wurde behoben, durch das
FragmentManager
eine Kopie des zuvor übersaveBackStack()
gespeicherten Status beibehielt, auch nachdem dieser Status wiederhergestellt wurde. (ID 212) - Die
dismissAllowingStateLoss()
-Methode vonDialogFragment
stürzt nicht mehr ab, wenn Sie sie nach dem Speichern des Status aufrufen, wenn Sie das DialogFragment speziell über dieshow(FragmentTransaction, String)
-Methode hinzufügen. (I84422)
Version 1.4.0-alpha05
21. Juli 2021
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
und androidx.fragment:fragment-testing:1.4.0-alpha05
werden losgelassen. Version 1.4.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Fragment
1.3.6
: Die Ansicht des Fragments wird jetzt richtig aufGONE
gesetzt, wennhide()
verwendet wird, während für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) - Aus Fragment
1.3.6
:FragmentActivity
löst jetzt immer den gespeicherten Status als ersten Vorgang in den Lebenszyklus-Callbacks auf, die er überschreibt. (I6db7a)
Aktualisierung der Abhängigkeit
- Fragment
1.3.6
: Fragmente sind jetzt von Aktivität1.2.4
(I3a66c) abhängig.
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
werden losgelassen. Version 1.4.0-alpha04 enthält diese Commits.
API-Änderungen
FragmentManager
verwendet jetztSavedStateRegistry
, um seinen Status zu speichern. Die MethodensaveAllState()
undrestoreSavedState()
wurden inFragmentController
ebenfalls eingestellt. Wenn duFragmentController
verwendest, um Fragmente außerhalb vonFragmentActivity
zu hosten, solltest duSavedStateRegistryOwner
in deinerFragmentHostCallbacks
implementieren. (Iba68e, b/188734238)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Aufruf von
saveBackStack()
im Rahmen der Unterstützung mehrerer Backstacks fehlgeschlagen ist, wenn gleichzeitig eineFragmentTransaction
ausgeführt wurde, für diereplace()
verwendet wurde. (I73137) - Ein
NullPointerException
wurde behoben, das nach dem manuellen Wiederherstellen eines gespeicherten Backstacks mit mehreren Transaktionen auftrat, wenn dierestoreBackStack()
API für die Unterstützung mehrerer Backstacks verwendet wurde. Außerdem wurde ein Problem behoben, bei demsetReorderingAllowed(true)
nicht für alle Transaktionen überprüft wurde. (I8c593) - Ein Problem wurde behoben, durch das
FragmentManager
fälschlicherweise den zuvor gespeicherten Status von Fragmenten wiederhergestellt hat, auch nachdem diese Fragmente aus derFragmentManager
entfernt wurden. Dadurch wurde der gespeicherte Status im Laufe der Zeit immer größer. (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
werden losgelassen. Version 1.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- Alle Fragment StrictMode-Klassen
Violation
wurden um detailliertere Fehlermeldungen ergänzt, in denen die Details des Verstoßes erläutert werden. (b/187871638)FragmentTagUsageViolation
enthält jetzt eine detailliertere Fehlermeldung, die den übergeordneten Container enthält, dem das Fragment hinzugefügt worden wäre. (Ic33a7)WrongFragmentContainerViolation
hat jetzt eine detailliertere Fehlermeldung, die den Container enthält, dem das Fragment hinzugefügt wurde. (Ib55f8)- Die Anwendungsfallklassen für
TargetFragmentUsageViolation
enthalten jetzt detailliertere Fehlermeldungen, die das fragliche Fragment und alle anderen enthaltenen Informationen enthalten. (Icc6ac) - Die Klassen, die
RetainInstanceUsageViolation
erweitern, haben jetzt detailliertere Fehlermeldungen, die das Fragment enthalten, das den Verstoß verursacht. (I6bd55) FragmentReuseViolation
enthält jetzt eine detailliertere Fehlermeldung, die die vorherige ID des Fragments enthält. (I28ce2)SetUserVisibleHintViolation
enthält jetzt eine ausführlichere Fehlermeldung, die enthält, auf welchen Wert der für Nutzer sichtbare Hinweis festgelegt wurde. (Ib2d5f)
Änderungen im Verhalten
- Die Einschränkung beim Aufrufen von
fitsSystemWindows
auf einemFragmentContainerView
wurde aufgehoben. Die App stürzt dadurch nicht mehr ab. (6b8ddd, b/190622202)
Fehlerkorrekturen
- Seit Fragment
1.3.5
: Behoben wurde eine Regression bei Übergängen mit freigegebenen Elementen, die durch aosp/1679887 in Fragment1.3.4
eingeführt wurde. In Fragmenten werden jetzt Übergangsgruppen korrekt verarbeitet (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
). Außerdem werden für freigegebene Elemente keineIndexOutOfBoundsException
s mehr ausgegeben. (I16484, b/188679569, b/188969304) - Die
FragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein entferntes Fragment auszublenden. (I573dd, b/183634730) - Die
OnCreateDialogIncorrectCallback
-Lint-Prüfung stürzt nicht mehr ab, wenn eine Variable der obersten Ebene ausgewertet wird. (0a9efa, b/189967522)
Version 1.4.0-alpha02
2. Juni 2021
androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
und androidx.fragment:fragment-testing:1.4.0-alpha02
wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
protokolliert jetzt immer Verstöße, wenn das Logging über dieFragmentManager
aktiviert ist, unabhängig von der aktuell verwendeten Richtlinie für den strengen Modus. (I02df6, b/187872638)FragmentStrictMode
unterstützt jetzt die Ausnahme bestimmterFragment
-Klassen vom strengen ModusViolation
, sodass für diese Klasse keine Strafen verhängt werden. (Ib4e5d, b/184786736)Die Klasse
FragmentStrictMode
Violation
wurde erweitert, um je nach Verstoß Strukturinformationen hinzuzufügen. So können Sie genau nachvollziehen, was den Verstoß verursacht hat, und das fragliche Fragment (If5118, b/187871150) prüfen. JedeViolation
enthält Folgendes:WrongFragmentContainerViolation
enthält jetzt dieViewGroup
, der dieFragment
hinzugefügt werden wollte. (I83c75, b/187871150)TargetFragmentUsageViolation
wurde inSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
undGetTargetFragmentRequestCodeUsageViolation
erweitert.SetTargetFragmentUsageViolation
enthält das Zielfragment und den Anfragecode. (I741b4, b/187871150)SetUserVisibleHintViolation
enthält jetzt den booleschen Wert, der ansetUserVisibleHint()
übergeben wurde. (I00585, b/187871150)FragmentTagUsageViolation
enthält jetzt die ViewGroup, in die das<fragment>
-Tag versucht hat, ein Fragment einzufügen.(I5dbbc, b/187871150)FragmentReuseViolation
enthält jetzt die eindeutige ID der vorherigen Instanz derFragment
, die die Verstoß verursacht hat. (I0544d, b/187871150)RetainInstanceUsageViolation
ist jetzt abstrakt und hat zwei Unterklassen,SetRetainInstanceUsageViolation
undGetRetainInstanceUsageViolation
, die die beiden Fälle für den Verstoßtyp darstellen. (Ic81e5, b/187871150)
Verhaltensänderungen
FragmentContainerView
löst jetzt eine Ausnahme aus, wenn versucht wird, dasfitsSystemWindow
-Attribut programmatisch oder über XML zu ändern. Einzüge sollten von der Ansicht jedes einzelnen Fragments verarbeitet werden. (Ie6651, b/187304502)
Version 1.4.0-alpha01
18. Mai 2021
androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
und androidx.fragment:fragment-testing:1.4.0-alpha01
werden losgelassen. Version 1.4.0-alpha01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das Fragment zurückgibt, das zuletzt dem Container hinzugefügt wurde. Dabei wird dieselbe Logik wie beifindFragmentById()
mit der ID derFragmentContainerView
verwendet, aber der Aufruf kann verschachtelt werden. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Das Attribut
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
wurde hinzugefügt, um anzugeben, ob die Standardanimation für den Aktivitätsübergang aus Ihrem Design im Fragmentübergang aktiviert werden soll. (I46652)
Mehrere Rückstapel
FragmentManager
verwaltet einen Back-Stack aus Fragmenttransaktionen, für die addToBackStack()
verwendet wurde. Auf diese Weise können Sie diese Transaktionen per Pop-up übertragen und zum vorherigen Status zurückkehren. Verwenden Sie dazu die Mechanismen zum Speichern des Status mit Fragmenten, damit Ihre Fragmente ihren Status entsprechend wiederherstellen können.
In dieser Version werden diese Mechanismen um zwei neue FragmentManager
APIs erweitert: saveBackStack(String name)
und restoreBackStack(String name)
. Diese APIs verwenden dieselbe name
wie addToBackStack()
, um den Status von FragmentTransaction
und den Status jedes Fragments, das in diesen Transaktionen hinzugefügt wurde, zu speichern. So können Sie diese Transaktionen und ihre Fragmente später mit ihrem Zustand intakt wiederherstellen. So können Sie effektiv zwischen mehreren Backstacks wechseln, indem Sie den aktuellen Backstack speichern und einen gespeicherten Backstack wiederherstellen.
saveBackStack()
funktioniert ähnlich wie popBackStack()
insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („per-pgezogen“) und alle hinzugefügten Fragmente gelöscht und entfernt werden. Sie unterscheidet sich jedoch in einigen wichtigen Punkten:
saveBackStack()
ist immer inklusiv.- Im Gegensatz zu
popBackStack()
, bei dem alle Transaktionen im Backstack an die Oberfläche gebracht werden, wenn der angegebene Name nicht im Backstack gefunden wird oder ein Nullname angegeben wird, geschieht beisaveBackStack()
nichts, wenn Sie zuvor keine Fragmenttransaktion mitaddToBackStack()
mit genau diesem nicht nullwertigen Namen verbindlich gemacht haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und dieser Status wiederhergestellt wird. AlleViewModel
-Instanzen, die diesen Fragmenten zugeordnet sind, bleiben erhalten (undonCleared()
wird nicht für sie aufgerufen).
Die Fragmenttransaktionen, die mit saveBackStack()
verwendet werden können, müssen bestimmte Kriterien erfüllen:
- Jede Fragmenttransaktion muss
setReorderingAllowed(true)
verwenden, damit die Transaktionen als einzelner, atomarer Vorgang wiederhergestellt werden können. - Die gespeicherten Transaktionen müssen in sich geschlossen sein, d.h., sie dürfen nicht explizit auf Fragmente außerhalb dieses Transaktionssatzes verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Backstack vorgenommen wurden.
- Kein gespeichertes Fragment darf ein beibehaltenes Fragment sein oder in seinem transitiven Satz untergeordneter Fragmente ein beibehaltenes Fragment enthalten. So wird sichergestellt, dass
FragmentManager
nach dem Speichern des Back Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack()
passiert bei restoreBackStack()
nichts, wenn Sie zuvor nicht saveBackStack()
mit demselben Namen aufgerufen haben. (b/80029773)
Fragment StrictMode
Die FragmentStrictMode
APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre App oder die von Ihnen verwendeten Bibliotheken keine veralteten Fragment-APIs aufrufen. Wenn ein Verstoß erkannt wird, können Sie eine Protokollnachricht drucken, Ihren eigenen benutzerdefinierten Listener auslösen oder Ihre App zum Absturz bringen. Die FragmentStrictMode.Policy
, die steuert, welche Prüfungen aktiviert sind und welche „Strafen“ ausgelöst werden, kann über die neue Methode setStrictModePolicy()
auf einem FragmentManager
festgelegt werden. Diese Richtlinie gilt für diese FragmentManager
und mittelbar für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (#123, #131, #150, b/143774122)
detectFragmentReuse()
erkennt, ob einerFragmentManager
eine zuvor entfernteFragment
-Instanz wieder hinzugefügt wird. Sie sollten niemals mit einerFragment
-Instanz interagieren oder einen Verweis darauf behalten, nachdem sie gelöscht und aus einerFragmentManager
entfernt wurde. (#142, b/153738653)detectFragmentTagUsage()
erkennt, wenn du das<fragment>
-Tag in deiner Layout-XML verwendest. Sie sollten immerFragmentContainerView
verwenden, wenn Sie Fragmente als Teil Ihres Layouts aufblähen. (#141, b/153738235)detectWrongFragmentContainer()
erkennt, wenn Sie einem Container ein Fragment hinzufügen, das keinFragmentContainerView
ist. Sie sollten immerFragmentContainerView
als Container für Fragmente in Ihrem Layout verwenden. (Nr. 146, b/181137036)detectRetainInstanceUsage()
erkennt, wenn Sie die verworfenensetRetainInstance()
- odergetRetainInstance()
-APIs verwenden. (#140, b/153737954)detectSetUserVisibleHint()
erkennt, wenn Sie die verworfenesetUserVisibleHint()
API verwenden. (Nr. 136, b/153738974)detectTargetFragmentUsage()
erkennt, wenn Sie die verworfenen APIssetTargetFragment()
,getTargetFragment()
odergetTargetRequestCode()
verwenden. (#139, b/153737745)
API-Änderungen
- Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue Statusmanager ist jetzt die einzige verfügbare Option. (I90036, b/162776418) FragmentScenario
implementiert jetztCloseable
, sodass Sie es mit deruse
-Methode oder try-with-resources von Kotlin verwenden können. (#121, b/143774122)
Neue Lint-Prüfungen
- Die
UseGetLayoutInflater
-Lint-Prüfung warnt jetzt bei der Verwendung vonLayoutInflater.from(Context)
in einemDialogFragment
. Sie sollten immer diegetLayoutInflater()
-Methode des Dialogfragments verwenden, um den richtigen Wert fürLayoutInflater
zu erhalten. (#156, b/170781346) - Die
DialogFragmentCallbacksDetector
-Lint-Prüfung warnt jetzt, wennsetOnCancelListener
odersetOnDismissListener
in deronCreateDialog()
-Methode einerDialogFragment
aufgerufen wird. Diese Listener gehören zurDialogFragment
selbst und Sie solltenonCancel()
undonDismiss()
überschreiben, um diese Callbacks zu erhalten. (#171, b/181780047, b/187524311)
Fehlerkorrekturen
- In Fragment 1.3.4 wurde eine Regression behoben, die in Fragment
1.3.3
bei Verwendung derViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder der Jetpack Compose-Methode vonviewModel()
in einem Fragment aufgetreten ist. In diesen Anwendungsfällen wird jetzt das von Ihrem Fragment bereitgestellteViewModelProvider.Factory
korrekt verwendet, wenngetDefaultViewModelProviderFactory()
überschrieben wird (wie bei@AndroidEntryPoint
-annotierten Fragmenten, wenn Hilt verwendet wird). Wenn Sie diese Methode nicht überschreiben, wird als Standard-Factory eineSavedStateViewModelFactory
erstellt, die ihren Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Ab Fragment 1.3.4: Wenn du
FragmentContainerView
in API 29 verwendest, werden Einleger nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben. (I1bb78, b/186012452) - Ab Fragment 1.3.4: Sie können Ihre Parcelable-Instanz jetzt nach dem Absturz des Prozesses aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Fragment 1.3.4: Wenn bei einer ViewGroup mit freigegebenen Elementen die Eigenschaft
transitionGroup
auf „false“ gesetzt ist, wird die ViewGroup jetzt richtig übergangen. (I99675)
Externer Beitrag
- Vielen Dank an simonschiller, dass er
FragmentScenario
Closeable
implementiert hat. (#121, b/143774122) - Vielen Dank an simonschiller, der die gesamte
FragmentStrictMode
API für diese Version hinzugefügt hat. - Vielen Dank an tatocaster für die
UseGetLayoutInflater
-Lint-Prüfung. (Nr. 156, b/170781346) - Vielen Dank an tatocaster für die
DialogFragmentCallbacksDetector
-Lint-Prüfung. (#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
- Fragment
1.4.0-alpha03
: DerFragmentManager
stürzt nicht mehr ab, wenn Sie versuchen, ein entferntes Fragment auszublenden. (I573dd, b/183634730) - Die Ansicht des Fragments wird jetzt richtig auf
GONE
gesetzt, wennhide()
verwendet wird, während für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) FragmentActivity
entsperrt jetzt immer den gespeicherten Status als ersten Vorgang in den Lebenszyklus-Callbacks, die sie überschreibt. (I6db7a)
Update der Abhängigkeiten
- Fragment
1.3.6
: Fragmente sind jetzt von Aktivität1.2.4
(I3a66c) abhängig.
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
werden losgelassen. Version 1.3.5 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression bei Übergängen von gemeinsam genutzten Elementen, die in Fragment
1.3.4
von aosp/1679887 eingeführt wurde, wurde behoben. In Fragmenten werden jetzt Übergangsgruppen korrekt verarbeitet (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
). Außerdem werden für freigegebene Elemente keineIndexOutOfBoundsException
s mehr ausgegeben. (I16484, b/188679569, b/188969304)
Version 1.3.4
18. Mai 2021
androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
und androidx.fragment:fragment-testing:1.3.4
werden losgelassen. Version 1.3.4 enthält diese Commits.
Fehlerkorrekturen
- Wir haben eine Regression behoben, die in Fragment
1.3.3
aufgetreten ist, wenn dieViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder die Jetpack Compose-Methode vonviewModel()
in einem Fragment verwendet wurde, bei dem Hilt verwendet wurde. Bei diesen Anwendungsfällen wird jetzt die von Ihrem Fragment bereitgestellteViewModelProvider.Factory
korrekt verwendet, wenn siegetDefaultViewModelProviderFactory()
überschreibt (wie bei mit@AndroidEntryPoint
annotierten Fragmenten). Wenn Sie diese Methode nicht überschreiben, wird als Standard-Factory einSavedStateViewModelFactory
erstellt, das seinen Status zusammen mit der Ansicht des Fragments speichert und wiederherstellt. (I5cbfa, b/186097368) - Wenn Sie
FragmentContainerView
in API 29 verwenden, werden Einblendungen nicht mehr unbegrenzt gesendet. Dadurch werden Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben. (I1bb78, b/186012452) - Sie können Ihre Parcelable jetzt nach dem Prozesstod aus dem Fragment-Ergebnis-Bundle abrufen. (I65932, b/187443158)
- Wenn bei einem Übergang mit freigegebenen Elementen in einer ViewGroup
transitionGroup
auf „false“ gesetzt ist, wird der Übergang jetzt korrekt ausgeführt. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
und androidx.fragment:fragment-testing:1.3.3
werden losgelassen. Version 1.3.3 enthält diese Commits.
Neue Funktionen
- Die Verwendung von
SavedStateViewModelFactory
funktioniert jetzt, wenn sie mit derSavedStateRegistryOwner
kombiniert wird, die durch die Verwendung vonViewTreeSavedStateRegistryOwner.get()
mit der Ansicht des Fragments zurückgegeben wird. (I21acf, b/181577191)
Fehlerkorrekturen
- Eine Regression im Fragment
1.3.2
wurde behoben, die dazu führte, dasspopEnter
-Animationen nicht ausgeführt wurden, wenn einFragmentTransaction
mit einemsetPrimaryNavFragment
-Vorgang geöffnet wurde, z. B. solche, die vonNavHostFragment
verwendet werden. (I38c87, b/183877426) FragmentContainerView
sorgt jetzt dafür, dass jedemFragment
ein neuer Satz vonWindowInsets
gesendet wird. Dadurch wird sichergestellt, dass jedes Fragment die Einfügungen jetzt unabhängig nutzen kann. (I63f68, b/172153900)DialogFragment
verarbeitet jetzt korrekt Fälle, in denen ein untergeordnetes Fragment einem Container hinzugefügt wird, der dieselbe ID wie ein Container in Ihrer benutzerdefiniertenDialog
-Klasse hat. Dadurch werden Probleme in der Ansichtshierarchie behoben, wenn IDs wiederverwendet werden, die intern von Dialogfeldern wieBottomSheetDialog
verwendet werden. (Ie6279, b/180021387)FragmentManager.dump()
rückt das erste Fragment in der Liste der aktiven Fragmente jetzt ordnungsgemäß ein. (If5c33, b/183705451)
Fehlerkorrekturen für den neuen State Manager
- Der neue Fragment State Manager verarbeitet jetzt Exit-Übergänge mit Ausblendungsvorgängen. (I9e4de, b/184830265)
Version 1.3.2
24. März 2021
androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
und androidx.fragment:fragment-testing:1.3.2
wurden veröffentlicht. Version 1.3.2 enthält diese Commits.
Neue Fehlerkorrekturen im State Manager
- Wenn Sie sowohl
popBackStack()
- als auchcommit()
-Vorgänge gleichzeitig ausführen, wird jetzt mit dem letzten Vorgang die Richtung für alle Animationen festgelegt, anstatt einige Pop- und einige Eintrittsanimationen auszuführen. (I7072e, b/181142246) - Bei einer Überblendung für ein freigegebenes Element wird der Name der Überblendung für Ansichten in einer Hierarchie mit freigegebenen Elementen nicht mehr gelöscht. (I4d4a6, b/179934757)
Abhängigkeitsupdates
- Fragment hängt jetzt von Activity 1.2.2 ab. Dadurch wird ein Problem mit der
InvalidFragmentVersionForActivityResult
-Lint-Prüfung von Activity bei Verwendung von Fragment 1.3.1 oder höher behoben. - Das Fragment hängt jetzt von Lifecycle 2.3.1 ab.
Version 1.3.1
10. März 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
und androidx.fragment:fragment-testing:1.3.1
wurden veröffentlicht. Version 1.3.1 enthält diese Commits.
Neue Funktionen
- Dialogfelder in einer
DialogFragment
können jetzt über ihre DecorView auf ViewTree-Inhaber zugreifen, sodassDialogFragment
mitComposeView
verwendet werden kann. (Ib9290, b/180691023)
Fehlerkorrekturen
- Fragmente, die mit FragmentContainerView in eine bereits vorhandene
RESUMED
-Aktivität eingefügt wurden, werden nach einer Konfigurationsänderung jetzt richtig angezeigt. (Ie14c8, b/180538371) - Am Ende des Fragments
toString()
ist kein zusätzliches}
mehr vorhanden (I54705, b/177761088) - Überschriebene Methoden in FragmentActivity übernehmen jetzt ordnungsgemäß die Basismethode javaDoc (I736ce, b/139548782).
- Die Parameterdokumentation in den Dokumenten für
setFragmentResult
undsetFragmentResultListener
wurde dahingehend aktualisiert, dass keine Nullables mehr akzeptiert werden (I990ba, b/178348386).
Fehlerkorrekturen für den neuen State Manager
- Ein Speicherleck in Fragmenten wurde behoben, das durch
mFocusedView
verursacht wurde (Ib4e9e, b/179925887). - Fragmente rufen jetzt ordnungsgemäß
onCreateOptionsMenu
auf, wenn Transaktionen ein-/ausblenden verwendet werden (I8bce8, b/180255554). - Untergeordnete Fragmente mit Übergängen, die vor dem Layouten des Fragments beginnen, erreichen jetzt richtig
RESUMED
(Ic11e6, b/180825150) - Mit dem
<fragment>
-Tag aufgeblähte Fragmente werden jetzt immer anRESUMED
gesendet (I452ac, I9fa49)
Abhängigkeitsupdates
- Fragment 1.3.1 hängt von der 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
werden losgelassen. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Neuer State Manager: Durch eine erhebliche Neuformulierung der internen Strukturen von
FragmentManager
wurden zahlreiche Probleme bei der Weiterleitung von Lebenszyklusereignissen, Animationen und Übergängen sowie bei der Verarbeitung verschobener Fragmente behoben. Integration der Activity Result API: Es wurde Unterstützung für die
ActivityResultRegistry
API hinzugefügt, die in Activity1.2.0
eingeführt wurde, umstartActivityForResult()
+onActivityResult()
- sowierequestPermissions()
+onRequestPermissionsResult()
-Abläufe zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem gibt es jetzt Hooks zum Testen dieser Abläufe. Weitere Informationen finden Sie im aktualisierten Hilfeartikel Ergebnis aus einer Aktivität abrufen.- In dieser Version wurden mehrere Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die die Funktion der Activity Result API in früheren Versionen von
FragmentActivity
verhindert haben. Sie müssen auf Fragment 1.3.0 aktualisieren, um die Activity Result APIs in einerFragmentActivity
oderAppCompatActivity
zu verwenden.
- In dieser Version wurden mehrere Probleme mit ungültigen Anfragecodes und dem Senden von Berechtigungsanfragen behoben, die die Funktion der Activity Result API in früheren Versionen von
Fragment Result API: Am
FragmentManager
wurde die Unterstützung für die Weitergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs hinzugefügt. Das funktioniert für hierarchische Fragmente (übergeordnetes/untergeordnetes Element), DialogFragmente und Fragmente in der Navigation. So wird sichergestellt, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es mindestensSTARTED
ist. Die Zielfragment-APIs wurden zugunsten dieser neuen APIs eingestellt. Weitere Informationen finden Sie unter Ergebnisse mithilfe der Fragment Result API abrufen.FragmentOnAttachListener
: DeronAttachFragment()
-Callback fürFragmentActivity
undFragment
wurde eingestellt. Es wurde eine neueFragmentOnAttachListener
hinzugefügt, die eine flexiblere Alternative bietet. Sie ermöglicht die Delegierung vononAttachFragment()
an separate, testbare Listener und die Unterstützung für das Hinzufügen eines Listeners zu anderen FragmentManagern als dem direkten untergeordneten FragmentManager.FragmentScenario
-Verbesserungen: DieFragmentScenario
-Klasse aus demfragment-testing
-Artefakt wurde in Kotlin neu geschrieben und es wurden einige Verbesserungen vorgenommen:FragmentScenario
verwendet jetztsetMaxLifecycle()
, ummoveToState()
zu implementieren, wodurch ein einheitliches Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt wird.FragmentScenario
unterstützt jetzt das Festlegen einer erstenLifecycle.State
, um den Status des Fragments zu bestätigen, bevor zum ersten Mal zu einerLifecycle.State
gewechselt wird.- Es gibt jetzt eine Alternative zur
FragmentScenario
API vononFragment
in Form der reifierten Kotlin-ErweiterungsmethodewithFragment
, mit der Sie einen Wert zurückgeben können. Insbesondere werden im angegebenen Block ausgelöste Ausnahmen noch einmal geworfen.
ViewTree
-Unterstützung:Fragment
unterstützt jetzt die APIsViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
undViewTreeSavedStateRegistryOwner
, die in Lebenszyklus2.3.0
und SavedState1.1.0
hinzugefügt wurden, sodass das Fragment alsViewModelStoreOwner
und einSavedStateRegistryOwner
undLifecycleOwner
zurückgegeben werden, die an den Ansichtslebenszyklus des Fragments gebunden sind, wenn einView
innerhalb einesFragment
verwendet wird.TRANSIT_
-Animation – Änderungen: Für die Standardeffekte von Fragmenten (TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
) wird jetztAnimator
anstelle vonAnimation
verwendet. Die Ressourcen, die zum Erstellen dieser Animatoren verwendet wurden, sind jetzt privat.Einstellung von
setRetainInstance()
: Die MethodesetRetainInstance()
für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Speichern des Status, die mit Aktivitäten, Fragmenten und Navigationsgrafiken verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den zu behaltenden Status getrennt halten. Dadurch wird eine häufige Ursache von Lecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor derViewModel
und deronCleared()
-Callback, den sie empfängt).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
werden losgelassen. Version 1.3.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das ein übergeordnetes
DialogFragment
nach einer Konfigurationsänderung über einem untergeordnetenDialogFragment
angezeigt wurde. Untergeordnete Dialogfragmente werden jetzt immer über einem übergeordneten Dialogfragment angezeigt. (I30806, b/177439520) - Ein Problem wurde behoben, durch das beim Ausführen eines
hide
-Vorgangs mit einemAnimation
-Fragment das ausgeblendete Fragment am Ende der Animation flackerte. (I57e22, b/175417675) - Fragmente mit Übergängen, die vor dem Anhängen der Ansichtshierarchie hinzugefügt wurden, erreichen jetzt
RESUMED
. (I1fc1d, b/177154873)
Fehlerkorrekturen für den neuen State Manager
- Die Ansicht des Fragments
Lifecycle
verarbeitet jetzt korrekt Fälle, in denen die Ansicht des Fragments zerstört wird, bevorLifecycle
CREATED
erreicht. So werden Ausnahmen wie „Kein Ereignis von INITIALIZED“ vermieden. (eda2bd, b/176138645) - Fragmente, die ein
Animator
verwenden, werden jetzt bei Verwendung vonFragmentContainerView
in der richtigen Reihenfolge angezeigt. (Id9aa3, b/176089197)
Version 1.3.0-rc01
16. Dezember 2020
androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
und androidx.fragment:fragment-testing:1.3.0-rc01
werden losgelassen. 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)
Fehlerkorrekturen für den neuen State Manager
- Lecks und visuelle Artefakte wurden behoben, die beim Hinzufügen eines Fragments mit einem
Animation
zu einemFragmentContainerView
und anschließenden Unterbrechen dieser Addition durch einen Pop-Vorgang auftraten. (I952d8) - Ein Problem wurde behoben, durch das die Ansicht des Fragments in der Ansichtshierarchie verblieb, wenn es während der
onCreate()
- oderonViewCreated()
-Methoden ersetzt wurde. (I8a7d5) - Der Fokus wird jetzt bei der Wiederaufnahme von Fragment-Stammansichten korrekt wiederhergestellt. (Ifc84b)
- Wenn Pop- und Replace-Vorgänge in derselben Fragmenttransaktion 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. Dabei wurde die Quell- und Binärkompatibilität durch die Verwendung der funktionalen Schnittstellen von Kotlin 1.4 fürFragmentAction
beibehalten. (I19d31)
Verhaltensänderungen
- FragmentContainerViews, die ein Fragment nicht mit dem
class
- oderandroid:name
-Attribut aufblähen, können jetzt außerhalb einerFragmentActivity
verwendet werden. (Id4397, b/172266337) - Wenn versucht wird, die maximale Lebensdauer eines Fragments auf
DESTROYED
festzulegen, wird jetzt eineIllegalArgumentException
ausgegeben (Ie7651, b/170765622) - Beim Initialisieren eines Fragmentszenarios mit dem Status
DESTROYED
wird jetzt einIllegalArgumentException
ausgelöst (I73590, b/170765622).
Fehlerkorrekturen für den neuen State Manager
- Ein Problem wurde behoben, bei dem die Ansicht nicht ihren endgültigen Status erreichte, wenn ein Fragmentübergang unterbrochen wurde, bei dem eine
Animator
- oder eine derTRANSIT_FRAGMENT_
-Optionen verwendet wurde. (I92426, b/169874632) - Es wurde ein Problem behoben, durch das Fragmente mit einem Exit-
Animation
nicht ordnungsgemäß gelöscht wurden. (I83d65) - Wenn Fragmente verlassen werden, deren Effekte rückgängig gemacht wurden, werden sie jetzt korrekt abgebrochen und mit dem richtigen Eintrittseffekt fortgesetzt. (I62226, b/167092035)
- Ein Problem wurde behoben, bei dem die Anweisung „exit
Animator
“ einerhide()
nicht ausgeführt wurde. (Id7ffe) - Fragmente werden jetzt richtig angezeigt, wenn sie verschoben und dann sofort gestartet werden. (Ie713b, b/170022857)
- Bei Fragmenten, bei denen die Ansicht, auf die der Fokus gerichtet ist, während einer Animation entfernt wird, wird der Fokus nicht mehr auf die getrennte Ansicht zurückgesetzt, sobald
RESUMED
erreicht wird (I38c65, b/172925703)
Externer Beitrag
FragmentFactory
speichert Fragmentklassen jetzt separat für verschiedeneClassLoader
-Instanzen im Cache. Vielen Dank, Simon Schiller. (#87, b/113886460)
Version 1.3.0-beta01
1. Oktober 2020
androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
und androidx.fragment:fragment-testing:1.3.0-beta01
werden losgelassen. Version 1.3.0-beta01 enthält diese Commits.
Neue Funktionen
setMaxLifecycle()
unterstützt jetzt das Festlegen des StatusLifecycle
aufINITIALIZING
, sofern das Fragment nicht nachCREATED
verschoben wurde. (b/159662173)
API-Änderungen
- Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Verhaltensänderungen
- Fragment-Ressourcendateien wurden korrekt als privat gekennzeichnet. (aosp/1425237)
Fehlerkorrekturen
- Mit dem
<fragment>
-Tag aufgeblähte Fragmente warten jetzt richtig, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie in den Status „STARTED“ (BEGONNEN) wechseln (I02f4c) - Bei sichtbaren Fragmenten und dann bei
setMaxLifecycle()
bisCREATED
wird der Exit-Effekt jetzt korrekt ausgeführt. (b/165822335) - Das Entfernen eines losgelösten Fragments, das nicht zum Backstack hinzugefügt wird, führt nicht mehr zu einem Speicherleck. Mit freundlicher Genehmigung von Nicklas Ansman Giertz (b/166489383)
- Aktive Fragmente haben jetzt immer einen nicht nullwertigen Wert für
FragmentManager
und Fragmente mit einem nicht nullwertigen Wert fürFragmentManager
werden immer als aktiv betrachtet. (aosp/1422346) - Für die Standardeffekte des Fragments,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. (b/166155034)
Fehlerkorrekturen für den neuen State Manager
- Der Fokusstatus der Ansicht wird jetzt korrekt wiederhergestellt, kurz bevor die Animation beginnt. (Icc256)
- Bei Fragmenten, die nur einen Übergang mit freigegebenen Elementen haben, werden die Spezialeffekte jetzt richtig abgeschlossen, d. h., sie wechseln tatsächlich in ihren Endzustand (Iaebc7, b/166658128)
- Fragmentansichten werden jetzt immer aus dem Container entfernt, bevor sie gelöscht werden. (ID5876)
- Der neue Zustandsmanager entfernt nun konsistent die bestehende Fragmentansicht, bevor die neue hinzugefügt wird. (I41a6e)
- Der neue Statusmanager berücksichtigt jetzt explizite Änderungen an der Sichtbarkeit einer Fragmentansicht. Wenn Sie die Ansicht eines aufrufenden Fragments also vor Beginn der Animation auf
INVISIBLE
setzen, bleibt sie unsichtbar. (b/164481490) - Bei Fragmenten hat
Animators
jetzt Vorrang vorAnimations
. Das bedeutet, dass in einem Fragment mit beiden nurAnimator
ausgeführt undAnimation
ignoriert wird. (b/167579557) - Der neue Statusmanager sorgt nicht mehr dafür, dass Fragmente bei Verwendung von Eintrittsanimationen flackern. (b/163084315)
Bekanntes Problem
Wenn du bei Verwendung des neuen Statusmanagers während der Eingabe eines Spezialeffekts die Schaltfläche „Zurück“ drückst, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt. Das führt zu einem leeren Bildschirm. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19. August 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
und androidx.fragment:fragment-testing:1.3.0-alpha08
werden losgelassen. Version 1.3.0-alpha08 enthält diese Commits.
New State Manager
Diese Version enthält eine umfassende Refaktorisierung der internen Statusverwaltung von FragmentManager
, die sich auf die Ausführung von Lebenszyklusmethoden, Animationen und Übergängen sowie auf die Verarbeitung verschobener Transaktionen auswirkt. Diese Einstellung ist standardmäßig aktiviert. Weitere Informationen finden Sie im Blogpost Fragments: Rebuilding the Internals. (b/139536619, b/147749580)
- Mit einer experimentellen API in
FragmentManager.enableNewStateManager(boolean)
lässt sich steuern, ob der 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) - Mithilfe von Fragmenten wird jetzt verhindert, dass mehrere konkurrierende Animationen auf denselben Fragmenten ausgeführt werden. So wird verhindert, dass eine
Animation
alleTransition
-Effekte überschreibt oder eineAnimator
und eineTransition
auf einem einzelnen Fragment gleichzeitig ausgeführt werden. (b/149569323) - Jetzt werden
enterTransition
undexitTranstion
für alle ein- und ausgehenden Fragmente ausgeführt, nicht nur für das letzte ein- und das erste ausgehende Fragment. (b/149344150) - Verschobene Fragmente bleiben nicht mehr im Status
CREATED
hängen, sondern wechseln zusammen mit anderen Fragmenten zuSTARTED
. (b/129035555) - Ein Problem wurde behoben, bei dem
FragmentManager
Vorgänge in der falschen Reihenfolge ausführte, wenn eine verschobene, neu sortierte Transaktion mit einer nicht neu sortierten Transaktion vermischt wurde. (b/147297731) - Wenn mehrere Fragmente gleichzeitig angezeigt werden, sind dazwischenliegende Fragmente nicht mehr vorübergehend sichtbar, wenn Fragmente verschoben werden. (b/37140383)
FragmentManager
gibt jetzt die richtigen Fragmente zurück, wennfindFragmentById()
oderfindFragmentByTag()
innerhalb desonAttachFragment()
-Callbacks aufgerufen wird. (b/153082833)- Fragmente rufen
onCreateView()
nicht mehr bei Fragmenten auf, die zerstört werden, wenn das Fragment, das sie ersetzt, verschoben wird. (b/143915710) - In der Fehlermeldung beim Versuch, die Framework-
Transition
- und AndroidX-Transition
-Instanzen zu kombinieren, wird jetzt das Fragment mit dem ungültigen Übergang angegeben. (b/155574969)
Änderungen im Verhalten
- Sie können jetzt
launch()
für eineActivityResultLauncher
in deronCreate()
-Lebenszyklusmethode eines Fragments aufrufen. (b/161464278) - Wenn
registerForActivityResult()
nachonCreate()
aufgerufen wird, wird jetzt eine Ausnahme ausgelöst, die darauf hinweist, dass dies nicht zulässig ist. Nach einer Konfigurationsänderung werden keine Ergebnisse mehr ausgegeben. (b/162255449) FragmentActivity
verwendet jetzt dieOnContextAvailableListener
API, die in Aktivität1.2.0-alpha08
eingeführt wurde, um den Status derFragmentManager
wiederherzustellen. Alle Listener, die Unterklassen vonFragmentActivity
hinzugefügt werden, werden nach diesem Listener ausgeführt. (I513da)
Fehlerkorrekturen
ActivityOptions
, die bei Verwendung vonstartIntentSenderForResult()
übergeben werden, werden jetzt berücksichtigt. (b/162247961)
Bekanntes Problem
- Wenn Sie den neuen Statusmanager verwenden und die Sichtbarkeit der Stammansicht des Fragments direkt nach
onViewCreated()
und voronResume()
festlegen, wird die von Ihnen festgelegte Sichtbarkeit vonFragmentManager
überschrieben, da dieser die Sichtbarkeit der Stammansicht steuert. Als Behelfslösung sollten Sie immer die Vorgängehide()
undshow()
verwenden, um die Sichtbarkeit des Fragments zu ändern. (b/164481490)
Version 1.3.0-alpha07
22. Juli 2020
androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
und androidx.fragment:fragment-testing:1.3.0-alpha07
werden losgelassen. 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)- Es wurde eine Alternative zur
FragmentScenario
API vononFragment
in Form der reifierten Kotlin-ErweiterungsmethodewithFragment
hinzugefügt, mit der ein Wert zurückgegeben werden kann. Insbesondere werden im angegebenen Block ausgelöste Ausnahmen noch einmal geworfen. (b/158697631)
Verhaltensänderungen
FragmentScenario
verwendet jetztsetMaxLifecycle()
, ummoveToState()
zu implementieren. Dadurch wird ein einheitliches Verhalten auf allen API-Ebenen sichergestellt und der Status des Fragments von der zugrunde liegenden Aktivität entkoppelt. (b/156527405)- Die von
ViewTreeSavedStateRegistryOwner
zurückgegebeneSavedStateRegistryOwner
ist jetzt an den Lebenszyklus der Fragmentansicht gebunden. Dadurch wird sichergestellt, dass sein Status gespeichert und gleichzeitig mit der Ansicht des Fragments wiederhergestellt wird. (b/158503763)
Fehlerkorrekturen
- Fragmente warten jetzt, bis die Ansicht des Fragments angehängt wurde, bevor sie
ViewCompat.requestApplyInsets()
aufrufen. So werden Fälle vermieden, in denen die Inset-Anfrage verworfen wurde. (b/158095749) - Durch den Aufruf 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
werden losgelassen. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Der
onAttachFragment()
-Callback aufFragmentActivity
undFragment
wurde eingestellt. Es wurde eine neueFragmentOnAttachListener
hinzugefügt, die eine flexiblere Alternative bietet. Sie ermöglicht die Delegierung vononAttachFragment()
an separate, testbare Listener und die Unterstützung für das Hinzufügen eines Listeners zu FragmentManagers, die nicht direkt untergeordnet sind. (I06d3d)
Fehlerkorrekturen
- Bei übergeordneten Fragmenten wird jetzt der Ansichtsstatus vor den untergeordneten Fragmenten wiederhergestellt. Dadurch wurde ein Problem mit der visuellen Sortierung nach einer Konfigurationsänderung behoben, wenn ein
DialogFragment
ein anderesDialogFragment
als untergeordnetes Fragment anzeigen würde. (b/157195715) - Ein Problem wurde behoben, bei dem die
UseRequireInsteadOfGet
-Lint-Prüfung die verkettete Verwendung der Operatoren?.
und!!
nicht richtig 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
werden losgelassen. Version 1.3.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für
ViewTreeViewModelStoreOwner
aus dem Lebenszyklus2.3.0-alpha03
undViewTreeSavedStateRegistryOwner
aus SavedState1.1.0-alpha01
bei Verwendung vonView
inFragment
wurde hinzugefügt. (aosp/1297993, aosp/1300264)
API-Änderungen
- Die APIs
setFragmentResult()
undsetFragmentResultListener()
verwenden jetztBundle
bzw.FragmentResultListener
ungleich null. Wenn Sie ein zuvor festgelegtes Ergebnis oder einen zuvor festgelegten Listener explizit löschen möchten, verwenden Sie die neuen MethodenclearFragmentResult()
undclearFragmentResultListener()
. (b/155416778) - Die
setFragmentResultListener()
-Kotlin-Erweiterungen, die ein Lambda akzeptieren, sind jetzt alsinline
gekennzeichnet. (b/155323404)
Verhaltensänderungen
- Die zuvor eingestellten
startActivityForResult()
,startIntentSenderForResult()
undrequestPermissions
aufFragment
verwenden jetzt internActivityResultRegistry
. Damit entfällt die Einschränkung, dass bei Verwendung dieser APIs nur die niedrigeren Bits (unter0xFFFF
) für Ihre Anfragecodes verwendet werden. (b/155518741)
Aktualisierungen der Dokumentation
- Die Dokumentation zu den Konstruktoren
Fragment(@LayoutRes int)
undDialogFragment(@LayoutRes int)
wurde erweitert, um zu verdeutlichen, dass sie bei Verwendung des StandardwertsFragmentFactory
vom Konstruktor ohne Argumente der Unterklassen aufgerufen werden sollten. (b/153042497)
Version 1.3.0-alpha04
29. April 2020
androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
und androidx.fragment:fragment-testing:1.3.0-alpha04
werden losgelassen. Version 1.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Am
FragmentManager
wurde die Unterstützung für die Weitergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs hinzugefügt. Das funktioniert für hierarchische Fragmente (übergeordnetes/untergeordnetes Element), DialogFragmente und Fragmente in der Navigation. So wird sichergestellt, dass Ergebnisse nur an Ihr Fragment gesendet werden, wenn es mindestensSTARTED
ist. (b/149787344)
API-Änderungen
- Die Zielfragment-APIs wurden eingestellt. Zum Übergeben von Daten zwischen Fragmenten sollten stattdessen die neuen Fragmentergebnis-APIs verwendet werden. (b/149787344)
- Die APIs
startActivityForResult()
/onActivityResult()
undrequestPermissions()
/onRequestPermissionsResult()
auf Fragment wurden eingestellt. Verwende die Activity Result APIs. (aosp/1290887) - Funktionsgefährdende Änderung bei Aktivität
1.2.0-alpha04
: Die MethodeprepareCall()
wurde inregisterForActivityResult()
umbenannt. (aosp/1278717)
Fehlerkorrekturen
- Die
getViewLifecycleOwner()
des Fragments wird jetzt beendet, bevoronSaveInstanceState()
aufgerufen wird, was dem Verhalten des Lebenszyklus des Fragments entspricht. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, ändert sich die Sichtbarkeit der Menüs, die von seinen untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt. (b/153593580) - Ein
illegalStateException
wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einerDialogFragment
mitFragmentContainerView
aufgetreten ist. (b/154366601) - Die Methode
getDefaultViewModelProviderFactory()
für Fragmente stürzt nicht mehr ab, wenn Ihre Fragmente außerhalb einer Aktivität gehostet werden. (b/153762914)
Version 1.3.0-alpha03
1. April 2020
androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
und androidx.fragment:fragment-testing:1.3.0-alpha03
werden losgelassen. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
prepareCall
-Methoden aufFragment
sind jetztfinal
. (b/152439361)
Fehlerkorrekturen
- Ein Regressionsfehler bei Fragment
1.3.0-alpha02
bei Verwendung vonBottomSheetDialogFragment
wurde behoben. (b/151652127, aosp/1263328, aosp/1265163) - Ein Absturz bei der Verwendung von
prepareCall
aus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004) - Ein Problem wurde behoben, bei dem gemeinsame Elemente und Ausstiegsübergänge bei Verwendung von
setTargetFragment()
ignoriert wurden. (b/152023196) - Fragment
1.2.4
: Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung von beibehaltenen Fragmenten zu ermöglichen. (b/151605338) - Fragment
1.2.4
: DieFragmentLiveDataObserve
-Lint-Regel fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht immer synchron sind. Beim Aufrufen vonobserve
kann also entwederthis
oderviewLifecycleOwner
verwendet werden. (b/151765086)
Änderungen an Abhängigkeiten
- Fragmente sind von Aktivität
1.2.0-alpha03
abhängig, bei der die Activity Result API, die in Aktivität1.2.0-alpha02
eingeführt wurde, erheblich verbessert wurde.
Version 1.3.0-alpha02
18. März 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
und androidx.fragment:fragment-testing:1.3.0-alpha02
werden losgelassen. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Unterstützung für die
ActivityResultRegistry
API hinzugefügt, die in Aktivität1.2.0-alpha02
eingeführt wurde, um die AufrufabfolgenstartActivityForResult()
+onActivityResult()
undrequestPermissions()
+onRequestPermissionsResult()
zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Außerdem gibt es jetzt Hooks zum Testen dieser Aufrufabfolgen. Weitere Informationen finden Sie im aktualisierten Hilfeartikel Ergebnis aus einer Aktivität abrufen. (b/125158199)
API-Änderungen
DialogFragment
bietet jetzt einen Konstruktor, der ein@LayoutRes
annimmt, das das Layout angibt, dasonCreateView()
standardmäßig aufblähen soll. (b/150327080)- Die Methode
onActivityCreated()
ist jetzt eingestellt. Code, der sich auf die Ansicht des Fragments bezieht, sollte inonViewCreated()
platziert werden, der direkt voronActivityCreated()
aufgerufen wird. Anderer Initialisierungscode sollte inonCreate()
platziert werden. Damit Sie speziell nach Abschluss deronCreate()
der Aktivität einen Rückruf erhalten, sollte eineLifeCycleObserver
auf derLifecycle
der Aktivität inonAttach()
registriert und entfernt werden, sobald deronCreate()
-Callback empfangen wurde. (b/144309266)
Fehlerkorrekturen
- Von Fragment
1.2.3
: Ein Fehler inDialogFragment
wurde behoben, der eineStackOverflowError
verursachte, wenngetLayoutInflater()
ausonCreateDialog()
aufgerufen wurde. (b/117894767, aosp/1258664) - Fragment
1.2.3
: Der Umfang der ProGuard-Regeln für Fragmente wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169) - Von Fragment
1.2.3
: Falsch positive Fehler in der Lint-PrüfungUseRequireInsteadOfGet
bei Verwendung eines lokalen Variablennamens, der den Kotlin-Attributnamen verdeckt, wurde behoben. (b/149891163) - Ab Fragment
1.2.3
:FragmentContainerView
gibt keineUnsupportedOperationException
mehr für die Verwendung des falschen Konstruktors in der Layoutvorschau aus. (b/149707833)
Bekannte Probleme
- Das Dialogfeld von
BottomSheetDialogFragment
wird nicht mehr richtig auf dem Bildschirm positioniert. (b/151652127)
Version 1.3.0-alpha01
4. März 2020
androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
und androidx.fragment:fragment-testing:1.3.0-alpha01
werden losgelassen. Version 1.3.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die im Lebenszyklus
2.3.0-alpha01
hinzugefügte Unterstützung für dieViewTreeLifecycleOwner.get(View)
API wurde hinzugefügt, sodass sie dieviewLifecycleOwner
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 haben Entwickler eine spezielle API zum Speichern des Status, die mit Aktivitäten, Fragmenten und Navigationsgrafiken verknüpft werden kann. So können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den zu behaltenden Status getrennt halten. Dadurch wird eine häufige Ursache für Lecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor derViewModel
und deronCleared()
-Callback, den sie empfängt). (b/143911815) - Mit der Veröffentlichung von ViewPager2
1.0.0
wurden die KlassenFragmentPagerAdapter
undFragmentStatePagerAdapter
für die Interaktion mitViewPager
eingestellt. Siehe Von ViewPager zu ViewPager2 migrieren. (b/145132715)
Fehlerkorrekturen
- Mit den ProGuard-Regeln für Fragmente werden jetzt nur die Standardkonstruktoren der
Fragment
-Klassen beibehalten, die verwendet werden, anstatt für alleFragment
-Instanzen. Dadurch wird eine Regression behoben, die mit Fragment1.2.1
eingeführt wurde. (b/149665169 - Die
require___()
-Lint-Regeln, die in Fragment1.2.2
hinzugefügt wurden, lösen bei lokalen Variablen, die denselben Namen wie die schattigen Kotlin-Attributnamen haben, keine Falschmeldungen mehr aus (d.h.view
) (b/149891163) FragmentContainerView
löst bei Verwendung der Layoutvorschau in Android Studio keineUnsupportedOperationException
mehr aus. (b/149707833)- Ein Problem wurde behoben, durch das beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung wieder 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
- Die
getViewLifecycleOwner()
des Fragments wird jetzt beendet, bevoronSaveInstanceState()
aufgerufen wird, was dem Verhalten des Lebenszyklus des Fragments entspricht. Diese Funktion wurde bereits in Fragment1.3.0-alpha04
veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)
auf ein Fragment angewendet wird, wird jetzt die Sichtbarkeit der Menüs korrekt geändert, die von den untergeordneten Fragmenten bereitgestellt werden. Diese Funktion wurde bereits 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
werden losgelassen. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Die ProGuard-Regeln für Fragmente wurden aktualisiert, um die Verschleierung von beibehaltenen Fragmenten zu ermöglichen. (b/151605338)
- Die
FragmentLiveDataObserve
-Lint-Regel fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und der Lebenszyklus der Ansicht 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
- Ein Fehler in
DialogFragment
wurde behoben, der beim Aufrufen vongetLayoutInflater()
ausonCreateDialog()
zu einemStackOverflowError
führte. (b/117894767, aosp/1258665) - Der Umfang der ProGuard-Regeln für Fragmente wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
- Falsch positive Ergebnisse in der
UseRequireInsteadOfGet
-Lint-Prüfung wurden behoben, wenn ein lokaler Variablenname den Namen der Kotlin-Eigenschaft überschattet hat. (b/149891163) FragmentContainerView
gibt keinUnsupportedOperationException
mehr für die Verwendung des falschen Konstruktors in der Layoutvorschau aus. (b/149707833)
Version 1.2.2
Version 1.2.2
19. Februar 2020
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
und androidx.fragment:fragment-testing:1.2.2
werden losgelassen. Version 1.2.2 enthält diese Commits.
Neue Lint-Prüfungen
- Lint schlägt vor,
viewLifecycleOwner
alsLifecycleOwner
für Aufrufe vonOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
undonActivityCreated()
zu verwenden. (b/142117657) - Es wurde eine neue Lint-Prüfung hinzugefügt, die bestätigt, dass Sie bei Verwendung des
fragment-testing
-Artefakts die richtigedebugImplementation
verwenden. (b/141500106) - Fragmente schlagen jetzt für alle Fragment-APIs, die sowohl ein
get
- als auch einrequire
-Äquivalent enthalten, vor, die verknüpftenrequire___()
-Methoden für aussagekräftigere Fehlermeldungen anstelle voncheckNotNull(get___())
,requireNonNull(get___())
oderget___()!!
zu verwenden. (aosp/1202883)
Fehlerkorrekturen
- Die ProGuard-Dateien für Fragmente wurden korrigiert, um R8-Warnungen zu vermeiden (b/148963981)
- Die bestehende Lint-Prüfung wurde verbessert, die die Verwendung von
viewLifecycleOwner
bei Verwendung vonobserve
vorschlägt, um auch die Version der Erweiterungsmethodelivedata-ktx
vonobserve
zu verarbeiten. (b/148996309) - Die Formatierung vieler Lint-Prüfungen wurde korrigiert (aosp/1157012)
Externe Beiträge
- Vielen Dank an Zac Sweers für die
require___()
Lint-Prüfungen im Namen von Slack. (aosp/1202883)
Version 1.2.1
Version 1.2.1
5. Februar 2020
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
und androidx.fragment:fragment-testing:1.2.1
wurden veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Der Standardkonstruktor von Fragmenten, die über die Methoden
add
undreplace
hinzugefügt wurden und eineClass
-Instanz (oder die reifierten Kotlin-Versionen) annehmen, wird jetzt von ProGuard beibehalten. (b/148181315) FragmentStatePagerAdapter
undFragmentPagerAdapter
fangen keine Ausnahmen mehr ab, die vonFragmentManager
beim Ausführen vonfinishUpdate()
ausgelöst werden. (aosp/1208711)- Ein Problem wurde behoben, durch das
FragmentManager.findFragment()
nicht mit Fragmenten funktionierte, die über das<fragment>
-Tag hinzugefügt wurden. (b/147784323) - Für Fragmente, die mit dem
<fragment>
-Tag maximiert werden, wird im Layout jetzt immer zuerstonInflate()
und dannonCreate()
aufgerufen. (aosp/1215856) - Wenn
toString()
auf einerFragmentManager
-Instanz aufgerufen wird, wird keineNullPointerException
mehr geworfen, wenn die Aktivität bereits zerstört wurde. (b/148189412)
Änderungen an Abhängigkeiten
- Die Fragmente
1.2.1
hängen jetzt vom Lifecycle ViewModel SavedState2.2.0
ab.
Version 1.2.0
Version 1.2.0
22. Januar 2020
androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
und androidx.fragment:fragment-testing:1.2.0
werden losgelassen. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- FragmentContainerView:
FragmentContainerView
ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Er ersetzt die Verwendung vonFrameLayout
oder anderen Layouts. Es unterstützt auch dieselbenclass
-,android:name
- und optionalenandroid:tag
-Flags wie das<fragment>
-Tag, verwendet aber ein normalesFragmentTransaction
, um dieses erste Fragment hinzuzufügen, anstelle des von<fragment>
verwendeten benutzerdefinierten Codepfads. onDestroyView()
-Timing: Fragmente warten jetzt, bis die Ausstiegsanimationen, Framework-Übergänge und AndroidX-Übergänge (bei Verwendung von Transition1.3.0
) abgeschlossen sind, bevoronDestroyView()
aufgerufen wird.- Klassenbasierte
add()
undreplace()
: Es wurden neue Überladungen vonadd()
undreplace()
fürFragmentTransaction
hinzugefügt, die einenClass<? extends Fragment>
und optional eineBundle
von Argumenten annehmen. Bei diesen Methoden wird mithilfe vonFragmentFactory
eine Instanz des hinzuzufügenden Fragments erstellt. Kotlin-Erweiterungen mit reifizierten Typen (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
) wurden ebenfallsfragment-ktx
hinzugefügt. - Integration von Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
wird jetzt standardmäßig bei der Verwendung vonby viewModels()
,by activityViewModels()
, demViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einem Fragment verwendet. - Neue Lint-Prüfungen: Eine neue Lint-Prüfung wurde hinzugefügt, die sicherstellt, dass Sie
getViewLifecycleOwner()
verwenden, wennLiveData
vononCreateView()
,onViewCreated()
oderonActivityCreated()
beobachtet wird. - Einstellung
getFragmentManager()
: Die MethodengetFragmentManager()
undrequireFragmentManager()
für Fragment wurden verworfen und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die das Nicht-Null-FragmentManager
-Objekt zurückgibt, dem das Fragment hinzugefügt wurde. MitisAdded()
können Sie feststellen, ob ein Aufruf sicher ist. - Einstellung von
FragmentManager.enableDebugLogging()
: Die statische MethodeFragmentManager.enableDebugLogging
wurde eingestellt. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
. So können Sie entwederDEBUG
- oderVERBOSE
-Logging aktivieren, ohne Ihre App neu kompilieren zu müssen.
Bekannte Probleme
- Fragmente, auf die nur über das
class
- oderandroid:name
-Attribut in einemFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch beibehalten. Sie müssen daher für jede Fragmentklasse manuell eine Beibehaltungsregel hinzufügen. (b/142601969) - Wenn du ein
NavHostFragment
mitclass
oderandroid:name
in XML mitFragmentContainerView
hinzufügst, kannst dufindNavController()
inonCreate()
deiner Aktivitäten nicht 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
werden losgelassen. Version 1.2.0-rc05 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression im Fragment
1.2.0-rc04
bei Verwendung des<fragment>
-Tags wurde behoben, die dazu führte, dassonViewCreated()
beim Löschen von Aktivitäten fälschlicherweise aufgerufen wurde. (b/146290333) - Bei Fragmenten, die mit dem
<fragment>
-Tag hinzugefügt wurden, wird die Nichtkonfiguration jetzt richtig gelöscht, auch wenn sie nur manchmal im Layout enthalten sind (z.B. nur im Querformat). Daher werden diese Fragmente jetzt korrekt zuCREATED
verschoben, auch wenn sie sich nicht in Ihrem Layout befinden, anstatt sie zu instanziieren, aber nie durch Lebenszyklusmethoden zu bewegen. (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
werden losgelassen. 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
- Eine unbeabsichtigte Änderung des Verhaltens wurde behoben, bei der entfernte Fragmente weiterhin von
findFragmentById()
/findFragmentByTag()
zurückgegeben werden, während ihre Exit-Animationen/Übergänge ausgeführt wurden. (b/143982969, aosp/1167585) - Untergeordnete Fragmente werden jetzt korrekt vor ihren übergeordneten Fragmenten beendet, wenn die enthaltene Aktivität
onSaveInstanceState()
aufruft. (b/144380645) - Es wurde ein Problem behoben, bei dem Ansichten fälschlicherweise als
INVISIBLE
markiert wurden, nachdem ein ausgeblendetes Fragment per Pop-up eingefügt wurde. (b/70793925) - Bei Übergängen für freigegebene Fragmentelemente werden jetzt auch Ansichten berücksichtigt, die gedreht, skaliert usw. wurden (b/142835261)
Aktualisierungen der Dokumentation
- Die Dokumentation zur Einstellung von
setUserVisibleHint()
wurde klarer formuliert. (b/143897055) - Die Dokumentation zu
setFragmentFactory()
undgetFragmentFactory()
wurde verbessert, um besser zu verdeutlichen, dass die Einstellung einerFragmentFactory
auch Auswirkungen auf untergeordnete FragmentManager hat. (aosp/1170095)
Änderungen an Abhängigkeiten
- Fragmente hängen jetzt von Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
und Activity1.1.0-rc03
ab.
Version 1.2.0-rc02
7. November 2019
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
und androidx.fragment:fragment-testing:1.2.0-rc02
werden losgelassen. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin verwendet die LintFix-Funktion zur Verwendung von
getViewLifecycleOwner()
bei der Beobachtung vonLiveData
ausonCreateView()
,onViewCreated()
oderonActivityCreated()
(eingeführt in Fragment1.2.0-rc01
) jetzt die Kotlin-EigenschaftszugriffssyntaxviewLifecycleOwner
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
werden losgelassen. Version 1.2.0-rc01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt jetzt zusätzlich zuandroid:name
das Attributclass
, was der Funktionalität des<fragment>
-Tags entspricht. (b/142722242)- Es wurde eine neue Lint-Prüfung hinzugefügt, die dafür sorgt, dass Sie
getViewLifecycleOwner()
verwenden, wenn SieLiveData
vononCreateView()
,onViewCreated()
oderonActivityCreated()
aus beobachten. (b/137122478)
Fehlerkorrekturen
- Die
onDismiss
- undonCancel
-Callbacks fürDialogFragment
garantieren jetzt, dass die an sie übergebenenDialogInterface
nicht null sind und dassgetDialog()
bei ihrer Ausführung einen anderen Wert zurückgibt. (b/141974033) FragmentContainerView
fügt jetzt das vonclass
oderandroid:name
definierte Fragment im Rahmen der Inflatierung hinzu, damitfindFragmentById()
undfindFragmentByTag()
sofort danach funktionieren. (b/142520327)- Ein
IllegalStateException
inFragmentContainerView
wurde behoben, da der Status gespeichert wurde. (b/142580713) - Ein
UnsupportedOperationException
inFragmentContainerView
wurde korrigiert, wenn dieFragmentContainerView
-Klasse verschleiert ist. (b/142657034)
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
in einerFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt. In diesem Fall müssen Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. Wir haben die Lint-Regel deaktiviert, die einen Wechsel zuFragmentContainerView
vorschlägt, bis das Problem durchaapt2
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
werden losgelassen. Version 1.2.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das die
onInflate()
des Fragments keine richtigen Attribute vonFragmentContainerView
erhielt, was zu Fehlern beiNavHostFragment
führte. (b/142421837)
Version 1.2.0-beta01
9. Oktober 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
und androidx.fragment:fragment-testing:1.2.0-beta01
werden losgelassen. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt das Hinzufügen eines ersten Fragments mit zusätzlicher Unterstützung für die XML-Attributeandroid:name
und optionalandroid:tag
. Im Gegensatz zum<fragment>
-Tag wird beiFragmentContainerView
ein normalesFragmentTransaction
verwendet, um das erste Fragment hinzuzufügen. Dadurch sind weitereFragmentTransaction
-Vorgänge auf dasFragmentContainerView
möglich und die Verwendung von View-Binding für das Layout. (b/139830628, b/141177981)- In Fragmenten wird jetzt eine Lint-Warnung angezeigt, die eine schnelle Lösung zum Ersetzen von
<fragment>
durchFragmentContainerView
bietet. (b/139830056)
Fehlerkorrekturen
- Ein Problem mit
ClassCastException
bei Verwendung vonandroidx.transition
wurde behoben. (b/140680619) - Bei Verwendung von Übergang
1.3.0-beta01
warten Fragmente jetzt bis zum Abschluss vonandroidx.transition
-Übergängen (zusätzlich zu Framework-Übergängen und -Animationen, die in Fragment1.2.0-alpha03
bzw. Fragment1.2.0-alpha02
korrigiert wurden) auf den Abschluss vononDestroyView()
. (aosp/1119841) - Wenn du Übergang
1.3.0-beta01
verwendest, werdenandroidx.transition
-Übergänge jetzt korrekt abgebrochen, 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 inFragmentContainerView
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) - Die Verwendung von
Log.w
im FragmentManager wurde entfernt. (aosp/1126468)
Bekannte Probleme
- Die
onInflate()
des Fragments erhalten keine richtigen Attribute vonFragmentContainerView
, was zu Fehlern wieNavHostFragment
führt. (b/142421837)
Version 1.2.0-alpha04
18. September 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
und androidx.fragment:fragment-testing:1.2.0-alpha04
wurden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
getFragmentManager()
undrequireFragmentManager()
vonFragment
wurden eingestellt und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die den nicht nullwertigenFragmentManager
zurückgibt, dem das Fragment hinzugefügt wird. MitisAdded()
können Sie prüfen, ob ein Aufruf sicher ist. (b/140574496) - Die statische Methode
FragmentManager.enableDebugLogging
wurde eingestellt. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
. So können Sie entweder dieDEBUG
- oder dieVERBOSE
-Protokollierung aktivieren, ohne Ihre App neu zu kompilieren. (aosp/1116591)
Fehlerkorrekturen
- Fragmente werden jetzt ordnungsgemäß zerstört, während Ausstiegsanimationen für andere Fragmente ausgeführt werden. (b/140574199)
- Es wurde ein Problem behoben, bei dem Fragmente
Activity.findViewById()
statt vorher nicht aufrufen. (aosp/1116431)
Version 1.2.0-alpha03
5. September 2019
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
und androidx.fragment:fragment-testing:1.2.0-alpha03
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
FragmentContainerView
heißt jetztfinal
. (b/140133091)
Fehlerkorrekturen
FragmentContainerView
kehrt jetzt die Zeichnungsreihenfolge korrekt um, wenn Fragmente aus dem Rückstapel entfernt werden. (b/139104187)- Es wurde ein Problem behoben, bei dem die falsche Animation ausgeführt wurde, wenn gleichzeitig ein Fragment auftaucht und gleichzeitig ein neues hinzugefügt wurde. (b/111659726)
- In Fragmenten wird jetzt nicht nur auf das Ende von Animationen gewartet, bevor
onDestroyView()
gesendet wird, sondern auch auf das Ende von Übergängen (was in Fragment1.2.0-alpha02
behoben wurde). (b/138741697)
Version 1.2.0-alpha02
7. August 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
und androidx.fragment:fragment-testing:11.2.0-alpha02
werden freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die Standard-Fabrik, die bei Verwendung vonby viewModels()
,by activityViewModels()
, demViewModelProvider
-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 und stimmen jetzt mit den Animationen überein, die von Aktivitäten auf Android 10-Geräten verwendet werden. (aosp/1012812, aosp/1014730)
API-Änderungen
FragmentContainerView
wird als dringend empfohlener Container für dynamisch hinzugefügte Fragmente eingeführt und ersetzt die Verwendung vonFrameLayout
usw., da damit Probleme mit der Z-Reihenfolge von Animationen und Fenster-Insets behoben werden, die an Fragmente gesendet werden. (b/37036000, aosp/985243, b/136494650)- Es wurde eine statische
FragmentManager.findFragment(View)
-Methode hinzugefügt, um das enthaltene 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()
fürFragmentTransaction
hinzugefügt, die eineClass<? extends Fragment>
und optionaleBundle
von Argumenten annehmen. Bei diesen Methoden wird mithilfe vonFragmentFactory
eine Instanz des hinzuzufügenden Fragments erstellt. Kotlin-Erweiterungen mit reifizierten Typen (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
) wurden ebenfallsfragment-ktx
hinzugefügt. (b/126124987) - Lebenszyklus-Callbacks von
Fragment
wurden@MainThread
-Annotationen hinzugefügt. (b/127272564) - Die APIs für Breadcrumb-Titel auf
FragmentTransaction
undFragmentManager.BackStackEntry
wurden eingestellt. (b/138252944) - Die Methode
setTransitionStyle
aufFragmentTransaction
wurde eingestellt. (aosp/1011537) - Viele der Methoden in
FragmentManager
sind nicht mehrabstract
.FragmentManager
selbst bleibtabstract
und sollte nicht direkt instanziiert oder erweitert werden. Sie sollten weiterhin nur eine vorhandene Instanz vongetSupportFragmentManager()
,getChildFragmentManager()
usw. abrufen.
Fehlerkorrekturen
- Von Fragment
1.1.0-rc04
: Fragmente brechen jetzt verschobene Übergänge in Fragmenten korrekt ab. (b/138251858) - Fragment
1.1.0-rc03
: Es wurde ein Problem behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wennpostponeEnterTransition()
mehrmals mit einer Zeitüberschreitung aufgerufen wurde. (b/137797118) - Fragment
1.1.0-rc02
: Ein Absturz inFragmentPagerAdapter
undFragmentStatePagerAdapter
beim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Bei Fragmenten wird jetzt gewartet, bis die Animationen abgeschlossen sind, bevor
onDestroyView()
gesendet wird. (b/136110528) - Fragmentanimationen von untergeordneten Fragmenten und deren Nachkommen werden jetzt richtig verarbeitet, wenn das übergeordnete Fragment animiert wird. (b/116675313)
- Ein
NullPointerException
-Problem wurde behoben, das auftrat, wenn Übergänge mit gemeinsam genutzten Elementen verwendet und gleichzeitig ein Pop-up- und Add-Vorgang kombiniert wurde. (b/120507394) - Eine Behelfslösung für
IllegalStateException
s bei Verwendung vonFragmentPagerAdapter
undFragmentStatePagerAdapter
in Robolectric-Tests wurde hinzugefügt. (b/137201343)
Version 1.2.0-alpha01
2. Juli 2019
androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
und androidx.fragment:fragment-testing:1.2.0-alpha01
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Der FragmentManager ruft
requestApplyInsets()
jetzt nach dem Anhängen der Ansicht des Fragments und direkt vor dem Aufrufen vononViewCreated()
auf, damit Ihre Ansicht immer die richtigen Einzüge hat. (b/135945162)
Fehlerkorrekturen
- Problem mit
NullPointerException
behoben, das auftrat, wennFragmentTransaction
vorreplace()
verwendet wurde undsetPrimaryNavigationFragment()
verwendet wurde. (b/134673465)
Version 1.1.0
Version 1.1.0
5. September 2019
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
und androidx.fragment:fragment-testing:1.1.0
werden losgelassen. 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 von App-Fragmenten. - FragmentFactory: Sie können jetzt eine
FragmentFactory
auf einerFragmentManager
festlegen, um das Erstellen von Fragmentinstanzen zu verwalten. Damit entfällt die strenge Anforderung, einen Konstruktor ohne Argumente zu haben. - Kotlin-Property-Delegierte für ViewModels: Das
fragment-ktx
-Artefakt 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()
aufFragmentTransaction
anwenden. Dies ersetzt das mittlerweile verworfenesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. - FragmentActivity LayoutId-Konstruktor: Unterklassen von
FragmentActivity
können jetzt optional einen Konstruktor vonFragmentActivity
aufrufen, der eineR.layout
-ID annimmt, die das Layout angibt, das als Inhaltsansicht festgelegt werden soll. Dies ist eine Alternative zum Aufrufen vonsetContentView()
inonCreate()
. Dies ändert nichts an der Anforderung, dass Ihre Unterklasse einen No-Argument-Konstruktor haben muss. - Konstruktor „LayoutId“ für Fragmente: Unterklassen von
Fragment
können jetzt optional einen Konstruktor vonFragment
aufrufen, der eineR.layout
-ID annimmt, die das Layout angibt, das für dieses Fragment verwendet werden soll, anstattonCreateView()
zu überschreiben. Das maximierte Layout kann inonViewCreated()
konfiguriert werden. - Mit Zeitüberschreitung verschieben: Es wurde eine neue Überlastung von
postponeEnterTransition()
hinzugefügt, die eine Zeitüberschreitung hat.
Version 1.1.0-rc04
7. August 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
und androidx.fragment:fragment-testing:1.1.0-rc04
werden freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Verschobene Übergänge werden jetzt korrekt abgebrochen, wenn Fragmente entfernt wurden. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
und androidx.fragment:fragment-testing:1.1.0-rc03
werden freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das vorherige Zeitüberschreitungen nicht abgebrochen wurden, wenn
postponeEnterTransition()
mit einer Zeitüberschreitung mehrmals aufgerufen wurde. (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
werden losgelassen. 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
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn während des Übergangs
show()
- oderhide()
-Vorgänge verwendet werden. (b/133385058) - Problem mit
NullPointerException
behoben, das auftrat, wennFragmentTransaction
vorreplace()
verwendet wurde undsetPrimaryNavigationFragment()
verwendet wurde. (b/134673465)
Version 1.1.0-beta01
5. Juni 2019
androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
und androidx.fragment:fragment-testing:1.1.0-beta01
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
androidx.lifecycle.Lifecycle
-Callbacks (insbesondere fürSTARTED
,RESUMED
,PAUSED
,STOPPED
undDESTROYED
) für verschachtelte Fragmente sind jetzt richtig verschachtelt. (b/133497591)OnBackPressedCallback
-Instanzen, die in deronCreate()
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)
- Fragment-Animationen und ‑Übergänge werden jetzt bei Verwendung von
animateLayoutChanges="true"
ignoriert. Dadurch wurde ein Problem behoben, bei dem Fragmente nicht ordnungsgemäß zerstört wurden. (b/116257087)
Version 1.1.0-alpha09
16. Mai 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
und androidx.fragment:fragment-testing:1.1.0-alpha09
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Wenn sich das primäre Navigationsfragment ändert, erhalten Fragmente jetzt einen Rückruf an eine neue
onPrimaryNavigationFragmentChanged(boolean)
-Methode. aosp/960857
Fehlerkorrekturen
- Menüelemente, die durch ein untergeordnetes Fragment aufgebläht wurden, werden jetzt richtig 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
werden losgelassen. Die in dieser Version enthaltenen Commits finden Sie hier.
Diese Version ist nicht mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 kompatibel. Aktualisieren Sie auf die Einstellungen 1.1.0-alpha05, wenn Sie diese Version von Fragmenten verwenden.
Neue Funktionen
- Es wurde eine neue Überlastung von
postponeEnterTransition()
hinzugefügt, die ein Timeout erfordert. Danach ruft das Fragment automatischstartPostponedEnterTransition()
b/120803208 auf.
API-Änderungen
- Funktionsgefährdende Änderung: Die zuvor verworfene Methode
FragmentFactory
instantiate
, für die einBundle
verwendet wurde, wurde entfernt. aosp/953856 - Wichtige Änderung: Die Konstanten
RESUME_ONLY_CURRENT_FRAGMENT
undUSE_SET_USER_VISIBLE_HINT
inFragmentPagerAdapter
undFragmentStatePagerAdapter
wurden inBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
bzw.BEHAVIOR_SET_USER_VISIBLE_HINT
umbenannt. aosp/954782
Fehlerkorrekturen
- Fragmente, deren Lebenszyklus über
setMaxLifecycle()
begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren Endstatus erreicht haben. b/131557151 - Bei Verwendung von
setMaxLifecycle(Lifecycle.State.CREATED)
wird die Ansicht von Fragmenten ordnungsgemäß zerstört. aosp/954180
Version 1.1.0-alpha07
25. April 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
und androidx.fragment:fragment-testing:1.1.0-alpha07
werden losgelassen. 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 mittlerweile verworfenesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)
API-Änderungen
moveToState(STARTED)
aufFragmentScenario
kann jetzt nur noch auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)
Verhaltensänderungen
- Aufgrund von (b/129907905) erhalten Fragmente im Backstack keinen Callback zu
onCreateView()
, wenn die Hostingaktivität neu erstellt wird.onCreateView()
wird jetzt nur dann aufgerufen, wenn das Fragment sichtbar wird (d.h. der Back Stack wird geplatzt).
Fehlerkorrekturen
- Ein Problem bei der Verwendung eines
<fragment>
-Tags in XML und descontentLayoutId
-Konstruktors vonFragmentActivity
oderAppCompatActivity
wurde behoben. (b/129907905) - Ein Problem wurde behoben, durch das Fragmente im Backstack nach einer Konfigurationsänderung nicht auf mindestens
CREATED
verschoben wurden, was dazu führte, dass ViewModels und untergeordnete beibehaltene Fragmente nicht ordnungsgemäß entsorgt wurden. (b/129593351) - Ein Absturz in
restoreSaveState
, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde, wurde behoben. (b/130433793) (aosp/947824) - Es wurden Probleme behoben, durch die 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) - In Fragmenten wird
LAYER_TYPE_HARDWARE
für Animationen nicht mehr erzwungen. Wenn Sie speziell eine Hardwareebenen-Animation benötigen, legen Sie diese als Teil Ihrer Animation fest. (b/129486478)
Version 1.1.0-alpha06
3. April 2019
androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
und androidx.fragment:fragment-testing:1.1.0-alpha06
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Von FragmentManager geworfene Ausnahmen enthalten jetzt den Namen des Fragments in der Meldung. (b/67759402)
API-Änderungen
Fragment
undFragmentActivity
enthalten jetzt einen zweiten Konstruktor, der eine@LayoutRes int
annimmt. Das ersetzt das vorherige Verhalten, bei dem die Klasse mit@ContentView
annotiert wurde. Dieser Ansatz funktioniert sowohl in App- als auch in Bibliotheksmodulen. (b/128352521)- Die
onActivityResult()
von FragmentActivity ist jetzt korrekt als@CallSuper
gekennzeichnet. (b/127971684) - Die
instantiate
-Methode der FragmentFactory, die ein Argument vom Typ „Bundle“ annimmt, wurde eingestellt. In Apps sollte stattdessen die neueinstantiate
-Überladung verwendet werden, die kein Bundle annimmt. (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
- Behebung einer Regression in 1.1.0-alpha05, die dazu führte, dass das eingehende Fragment auf dem Bildschirm flackerte. (b/129405432)
- Ein Problem wurde behoben, durch das das primäre Navigationsfragment nach einer Reihe von Vorgängen vom Typ „popBackStack+replace+popBackStack“ verloren ging. (b/124332597)
- Ein Problem wurde behoben, das beim Wiederherstellen des Fragmentstatus bei Verwendung von
@ContentView
-Konstruktoren in Ihrer Aktivität auftrat. (b/127313094) - Die Logik von
setTargetFragment()
wurde korrigiert, wenn ein vorhandenes Zielfragment durch ein Fragment ersetzt wird, das noch nicht mit dem FragmentManager verbunden 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
werden losgelassen. Eine vollständige Liste der Commits in dieser Version finden Sie hier.
Neue Funktionen
@ContentView
Anmerkungsabfragen werden jetzt im Cache gespeichert (b/123709449)
Geändertes Verhalten
- Wenn
remove()
,hide()
,show()
,detach()
undsetPrimaryNavigationFragment()
mit einem Fragment aufgerufen werden, das an einem anderen FragmentManager angehängt ist, wird jetzt eineIllegalStateException
ausgegeben, anstatt dass der Vorgang geräuschlos fehlschlägt (aosp/904301)
Fehlerkorrekturen
onNewIntent
fürFragmentActivity
ist jetzt korrekt mit@CallSuper
gekennzeichnet (b/124120586)- Ein Problem wurde behoben, durch das die
onDismiss()
vonDialogFragment
bei Verwendung vongetDialog().dismiss()
odergetDialog().cancel()
zweimal aufgerufen werden konnte (b/126563750)
Version 1.1.0-alpha04
7. Februar 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
und androidx.fragment:fragment-testing 1.1.0-alpha04
werden losgelassen.
Neue Funktionen
- Es wurde Unterstützung für die
@ContentView
-Klassenannotation hinzugefügt, mit der Sie angeben können, welche Layout-XML-Datei aufgebläht werden soll, anstattonCreateView()
zu überschreiben. Wir empfehlen, sich ähnliche Arbeiten inonViewCreated()
anzusehen. (aosp/837619) fragment-testing
hängt jetzt vonandroidx.test:core-ktx
1.1.0 (stabil) ab (b/121209673)- Sie können jetzt
openActionBarOverflowOrOptionsMenu
mitFragmentScenario
verwenden, um von Fragmenten gehostete Optionsmenüs zu testen (b/121126668)
API-Änderungen
- Die Methode
requireArguments()
wurde hinzugefügt, die eine@NonNull Bundle
zurückgibt oder eineIllegalStateException
wirft (b/121196360) - Hinweis hinzugefügt, dass
getLifecycle()
,getViewLifecycleOwner()
undgetViewLifecycleOwnerLiveData()
nicht überschrieben werden sollten und in einem zukünftigen Release endgültig festgelegt werden. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (aosp/880714) - Hinweis hinzugefügt, dass
getViewModelStore()
nicht überschrieben werden sollte und in einem zukünftigen Release endgültig festgelegt wird. Wenn Sie diese Methode derzeit überschreiben, stellen Sie bitte eine Funktionsanfrage. (aosp/880713) - Ein Problem mit der Kompatibilität mit Binärprogrammen mit früheren Releases von Fragmenten wurde behoben. (aosp/887877) (aosp/889834)
Fehlerkorrekturen
- Zielfragmente werden korrekt gelöscht, wenn Sie
null
ansetTargetFragment()
übergeben. (aosp/849969) - Ein Problem wurde behoben, durch das 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 ist von der neu veröffentlichten SavedState-Bibliothek abhängig [aosp/824380] - Es wurde ein
by activityViewModels
Kotlin-Property-Delegate hinzugefügt, um ViewModels abzurufen, die mit der enthaltenen Aktivität verknüpft sind [b/119050253] - Der
by viewModels
-Kotlin-Property-Delegate wurde erweitert, um eine optionale Lambdamethode zum Abrufen desViewModelStoreOwner
zu akzeptieren. So können Sie das übergeordnete Fragment oder ein anderes benutzerdefiniertesViewModelStoreOwner
mit Code wieval viewModel: MyViewModel by viewModels(::requireParentFragment)
übergeben. [b/119050253]
API-Änderungen
- Mit
FragmentScenario
können Sie jetzt ein Design angeben, z. B.Theme.AppCompat
[b/119054431]. Dies ist eine funktionsgefährdende Änderung. - Die Methode
requireView()
wurde hinzugefügt, die eine@NonNull View
zurückgibt oder eineIllegalStateException
wirft. [b/120241368] - Es wurde eine
requireParentFragment()
-Methode hinzugefügt, die eine@NonNull Fragment
zurückgibt oder eineIllegalStateException
wirft [b/112103783]
Fehlerkorrekturen
- Fehler IllegalStateException: Fehler beim Speichern des Status behoben b/120814739
- Fragmente, die aus dem gespeicherten Instanzstatus wiederhergestellt werden, erhalten jetzt immer einen nicht nullwertigen
Bundle
. [b/119794496] - Entfernte Fragmente verwenden ihr
Lifecycle
-Objekt nicht mehr, wenn sie wieder hinzugefügt werden [b/118880674]
Version 1.1.0-alpha02
3. Dezember 2018
Neue Funktionen
- Mit den Kotlin-Erweiterungen von FragmentSzenario können Sie jetzt eine Lambda-Funktion für die Fragment-Konstruktion verwenden, um eine
FragmentFactory
-Instanz zu übergeben. (aosp/812913)
Fehlerkorrekturen
- Behoben wurde eine IllegalStateException bei der Verwendung verschachtelter Fragmente im Backstack (b/119256498).
- Absturz bei Verwendung von
FragmentScenario.recreate()
mit einemFragmentFactory
behoben (aosp/820540) - Ein Problem wurde behoben, durch das nach dem Entfernen eines Fragments nicht mehr auf Zielfragmente zugegriffen werden konnte (aosp/807634)
Version 1.1.0-alpha01
5. November 2018
Das ist die erste Version des fragment-testing
-Artefakts und von FragmentScenario
, die auf den APIs von androidx.test:core basieren. Weitere Informationen finden Sie in der Dokumentation zum Fragmenttest.
Neue Funktionen
- Neue Klasse „FragmentScenario“ zum Testen von Fragmenten im Alleingang.
- Sie können jetzt für jeden
FragmentManager
einenFragmentFactory
festlegen, um zu steuern, wie neue Fragmentinstanzen erstellt werden. - Es wurde ein neuer
by viewModels()
Kotlin-Property Delegate zum Abrufen von ViewModels aus einem Fragment hinzugefügt. - Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt in der
onStop()
eines Fragments abgebrochen.
API-Änderungen
- Die Annotations zur Nullbarkeit wurden in der Fragment API deutlich erweitert.
Fehlerkorrekturen
- Behebung eines Problems, das dazu führte, dass Fragmentvorgänge in LiveData fehlschlugen(b/77944637)
Bekannte Probleme
- Auf Zielfragmente kann nicht zugegriffen werden, nachdem ein Fragment aus FragmentManager entfernt wurde.
fragment-testing
hängt vonandroidx.test:core:1.0.0-beta01
statt von der korrektenandroidx.test:core:1.0.0
ab.