Fragment
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
4. September 2024 | 1.8.3 | - | – | - |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von einem Fragment hinzuzufügen, müssen Sie das Maven-Repository von Google zu Ihrem Projekt arbeiten. Maven-Repository von Google lesen .
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Groovy
dependencies { def fragment_version = "1.8.4" // 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.4" // 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
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie für ein vorhandenes Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 1.8
Version 1.8.3
4. September 2024
androidx.fragment:fragment-*:1.8.3
wurde veröffentlicht. Version 1.8.3 enthält diese Commits.
Fehlerkorrekturen
FragmentManager
berücksichtigt jetzt ausstehende Vorgänge bei der Verarbeitung der vorausschauenden Zurück-Geste korrekt. Dadurch sollte sichergestellt werden, dass die Ausführung eines Systems nicht mehr zu einemIndexOutOfBoundsException
führt. (I9ba32, b/342316801)AndroidFragment
stürzt nicht mehr ab, wenn es zur Komposition hinzugefügt wird, während der Status der Aktivität bzw. des Fragments bereits gespeichert ist. (I985e9, b/356643968)
Version 1.8.2
24. Juli 2024
androidx.fragment:fragment-*:1.8.2
wurde 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. „Keine Ansicht für ID gefunden“ wird vermieden. wenn auf dieses Fragment zurückgekehrt wird. (I94608)- Fragmente, die über die Methode
FragmentTransaction.add
hinzugefügt werden, die einViewGroup
benötigt, warten jetzt aufonContainerAvailable
, bevor sie zuonStart()
gelangen. Dies betrifft Nutzer dieser API, z. B.AndroidFragment
, die jetzt auf die erneute Eingabe der Komposition durchAndroidFragment
warten, bevor sie die Komposition überonStart()
verschiebt. (I94608)
Version 1.8.1
26. Juni 2024
androidx.fragment:fragment-*:1.8.1
wurde veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, durch das Fragmente ohne Container sofort
DESTROYED
waren, wenn eine vorausgesagte Zurück-Geste 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
wurde 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. Sie übernimmt automatisch das Speichern und Wiederherstellen des Fragmentstatus. 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
-Schnittstelle derFragmentManager
wird jetzt im Rahmen der Ausführung von Vorgängen inFragmentManager
ausgelöst und bewegt ihn entsprechend dem Timing desonBackStackChangeCommitted
-Callbacks näher.
Version 1.8.0-rc01
29. Mai 2024
androidx.fragment:fragment-*:1.8.0-rc01
wurde 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
wurde veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Von Fragment
1.7.1
: Die vorausschauende Zurück-Funktion wird jetzt nur für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator- oder einen Seekable Androidx-Übergang haben. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem schwarzen Bildschirm führt. (I43037, b/339169168)
Version 1.8.0-alpha02
17. April 2024
androidx.fragment:fragment-*:1.8.0-alpha02
wurde veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.7.0-rc02
: Es wurden Logs hinzugefügt, die angeben, warum das Festlegen einersharedElement
ohne weitere Übergänge nicht ausgeführt werden kann. (Iec48e) - Ab Fragment
1.7.0-rc02
: Es wurde ein Fehler behoben, bei dem Transaktionen, bei denen alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurden, zu einem Absturz führte. 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 dem neuen
AndroidFragment
Composable
können Fragmente über den Klassennamen des Fragments zur Compose-Hierarchie hinzugefügt werden. Sie übernimmt automatisch das Speichern und Wiederherstellen des Fragmentstatus. Dies kann als direkter Ersatz für AndroidViewBindingComposable
verwendet werden.(b/312895363, Icf841)
Änderungen an der Dokumentation
- Die Dokumentation für die
OnBackStackChangedListener
APIs wurde aktualisiert, um anzugeben, wann sie aufgerufen werden und wie sie verwendet werden sollen. (I0bfd9)
Aktualisierung der Abhängigkeit
- 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
- Predictive Back wird jetzt nur für Transaktionen ausgeführt, bei denen alle Fragmente entweder einen Animator- oder einen Seekable Androidx-Übergang aufweisen. Dadurch wird ein Problem behoben, bei dem das Abbrechen einer teilweise suchbaren Transaktion zu einem leeren Bildschirm führen würde. (I43037, b/339169168)
Version 1.7.0
1. Mai 2024
androidx.fragment:fragment-*:1.7.0
wurde veröffentlicht. Version 1.7.0 enthält diese Commits.
Unterstützung für Rückengesten
- Fragmente unterstützen jetzt bei Verwendung von
Animator
oder bei Verwendung von AndroidX Transition 1.5.0 für die Vorhersage in der App. 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.
Übergangssystem | 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 vorausschauenden Zurück-Touch-Geste in Fragmenten Probleme mit der vorausschauenden Zurück-Unterstützung feststellen, melden Sie ein Problem bei Fragment. Verwenden Sie dabei ein Beispielprojekt, in dem Ihr Problem reproduziert wird. Du kannst die automatische Vervollständigung deaktivieren, indem du FragmentManager.enabledPredictiveBack(false)
in den onCreate()
deiner Aktivitäten verwendest.
FragmentManager.OnBackStackChangedListener()
stellt jetzt onBackStackChangeProgressed()
und onBackStackChangeCancelled()
für den prognostizierten zurückliegenden Fortschritt bzw. abgesagte Ereignisse bereit.
Artefakt zur Fragmenterstellung
Es wurde ein neues fragment-compose
-Artefakt erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentierten Architektur zu einer vollständig Compose-basierten Architektur verschoben werden.
Das erste in diesem neuen Artefakt verfügbare Feature ist eine content
-Erweiterungsmethode für Fragment
. Sie soll die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen. 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
wurde 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) - Es wurde ein Fehler behoben, bei dem Transaktionen, bei denen alle anderen Übergänge suchbar waren, ein nicht suchbares gemeinsames Element hinzugefügt wurden, zu einem Absturz führte. 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
wurde veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Aktualisierung der Abhängigkeit
- 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
wurde veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
FragmentHostCallback
ist jetzt in Kotlin geschrieben, sodass die Null-Zulässigkeit des generischen Typs des Hosts der Null-Zulässigkeit des RückgabetypsonGetHost()
entspricht. (I40af5)
Fehlerkorrekturen
- Folgendes Problem wurde behoben: Wenn eine vorausschauende Zurück-Geste für ein Fragment, das sich nicht in einem Container befindet, festgeschrieben wurde, wurde dieses Fragment nie gelöscht. Das Fragment wird jetzt sofort in den endgültigen Zustand 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
wurde veröffentlicht. Version 1.7.0-alpha10 enthält diese Commits.
Fehlerkorrekturen
- Das bekannte Problem in der vorherigen Fragment-Version wurde behoben, bei dem Fragmente mithilfe der Predictive Back-Unterstützung für
Animator
- oder AndroidX-Übergänge einNullPointerException
vonhandleOnBackProgressed
ausgeben, wenn jemals überaddOnBackStackChangedListener
keinFragmentManager.OnBackStackChangedListener
hinzugefügt wurde. (I7c835)
Version 1.7.0-alpha09
24. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha09
wurde veröffentlicht. Version 1.7.0-alpha09 enthält diese Commits.
Artefakt zur Fragmenterstellung
Es wurde ein neues fragment-compose
-Artefakt erstellt, das sich auf die Unterstützung von Anwendungen konzentriert, die gerade von einer fragmentierten Architektur zu einer vollständig Compose-basierten Architektur verschoben werden.
Das erste in diesem neuen Artefakt verfügbare Feature ist eine content
-Erweiterungsmethode für Fragment
. Sie soll die Verwendung von „Compose“ für die Benutzeroberfläche eines einzelnen Fragments vereinfachen. Dazu wird eine ComposeView
für Sie erstellt und die richtige ViewCompositionStrategy
festgelegt. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Neue Funktionen
FragmentManager.OnBackStackChangedListener()
stellt jetztonBackStackChangeProgressed()
undonBackStackChangeCancelled()
für den prognostizierten zurückliegenden Fortschritt bzw. abgesagte Ereignisse bereit. (214b87)
Bekanntes Problem
- Wenn Fragment die vorausschauende Back-Unterstützung für
Animator
- oder AndroidX-Übergänge verwendet, geben Fragmente eineNullPointerException
vonhandleOnBackProgressed
aus, wenn noch nieFragmentManager.OnBackStackChangedListener
überaddOnBackStackChangedListener
hinzugefügt wurde. Durch das manuelle Hinzufügen eines Listeners lässt sich der Absturz umgehen. Dieses Problem wird in der nächsten Version von Fragmenten behoben.
Version 1.7.0-alpha08
10. Januar 2024
androidx.fragment:fragment-*:1.7.0-alpha08
wurde 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
wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ein
NullPointerException
wurde behoben, der durch das Festlegen eines Übergangs für gemeinsam genutzte Elemente und das Fehlen einer Eingabe/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
wurde veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Aktualisierung der Abhängigkeit
- 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
wurde veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Fragmente unterstützen jetzt Predictive Back bei Verwendung von Androidx-Übergängen. Auf diese Weise können Sie die Zurück-Touch-Geste verwenden, um mit Ihrer benutzerdefinierten Androidx-Übergang zum vorherigen Fragment zu springen, bevor Sie sich entscheiden, die Transaktion mit der abgeschlossenen Geste entweder zu übergeben oder abzubrechen. Sie müssen die Version
1.5.0-alpha03
für die Umstellung 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. Dies könnte durch ein Problem in der Übergangsbibliothek verursacht werden. (b/300157785). Wenn Sie dieses Problem sehen, melden Sie ein Problem für Fragment und geben Sie ein Beispielprojekt an, in dem das Problem reproduziert wird. Du kannst die automatische Vervollständigung deaktivieren, indem du
FragmentManager.enabledPredictiveBack(false)
in denonCreate()
deiner Aktivitäten verwendest.
Version 1.7.0-alpha04
6. September 2023
androidx.fragment:fragment-*:1.7.0-alpha04
wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem Fragmente beim Abbrechen einer Touch-Geste zur automatischen Vervollständigung nicht den richtigen Lebenszyklusstatus erreichten. (I7cffe, b/297379023)
- Regressionen behoben, bei denen Animationen mit Übergängen ausgeführt werden durften. (I59f36)
- Bei der Verwendung von Predictive Back mit Fragmenten wurde ein Problem behoben, bei dem ein Versuch, das vorletzte Fragment des Back-Stacks zweimal schnell hintereinander zurückzugehen, zu einem Absturz führte. (Ifa1a4)
Version 1.7.0-alpha03
23. August 2023
androidx.fragment:fragment-*:1.7.0-alpha03
wurde veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem mit Fragmenten behoben, das bei Verwendung der automatischen Vervollständigungsfunktion dazu führte, dass das erste Fragment im Back Stack des Fragmentmanagers übersprungen und die Aktivität beendet wurde, wenn das System über die Bedienung über 3 Schaltflächen oder die vorausgesagte Zurück-Touch-Geste zum Zurückkehren verwendet wurde. (I0664b, b/295231788)
Version 1.7.0-alpha02
9. August 2023
androidx.fragment:fragment-*:1.7.0-alpha02
wurde veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Wenn Sie Fragmente mit vorausschauenden Zurück-Gesten aus API 34 und ein Übergangssystem verwenden, das keine Suche (
Animations
,Transitions
) oder keine Übergänge unterstützt, warten Fragmente jetzt, bis die Geste abgeschlossen ist, bevor sie die Aktion „Zurück“ ausführen. (I8100c)
Version 1.7.0-alpha01
7. Juni 2023
androidx.fragment:fragment-*:1.7.0-alpha01
wurde veröffentlicht. Diese Version wird in einem internen Zweig entwickelt.
Neue Funktionen
- Fragmente unterstützen jetzt bei der Verwendung von
Animator
die Hintergrundwiedergabe 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 den experimentellenenablePredictiveBack()
verwenden undfalse
übergeben.
Version 1.6
Version 1.6.2
1. November 2023
androidx.fragment:fragment-*:1.6.2
wurde veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Wenn das Fragment eines
FragmentContainerView
zu groß ist, kann auf seine Status wieFragmentManager
, Host und ID jetzt über denonInflate
-Callback zugegriffen werden. (I1e44c, b/307427423) - Wenn Sie
clearBackStack
verwenden, um eine Reihe von Fragmenten zu entfernen, werden jetzt alleViewModel
-Elemente eines verschachtelten Fragments gelöscht, wenn dieViewModels
des übergeordneten Fragments gelöscht werden. (I6d83c, b/296173018)
Version 1.6.1
26. Juli 2023
androidx.fragment:fragment-*:1.6.1
wurde veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem der gespeicherte Status, der beim Beenden der Aktivität, aber nicht gelöscht wurde, fälschlicherweise im Cache gespeichert wurde, selbst nachdem die Fragmentinstanz wieder in den Status
RESUMED
verschoben wurde. Dies würde dazu führen, dass der im Cache gespeicherte Status wiederverwendet wird, wenn sich die Fragmentinstanz im Back Stack befunden hat, wenn die Multiple Back Stacks API verwendet wurde, um das Fragment zu speichern und wiederherzustellen. (I71288, b/246289075)
Aktualisierung der Abhängigkeit
- Das Fragment hängt jetzt von der Aktivität 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 auf den Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser Status wird jetzt immer in einerBundle
gespeichert, mit der genau ermittelt werden kann, woher der Status eines Fragments stammt. - Die
FragmentManager.OnBackStackChangedListener
-Oberfläche wurde um zwei zusätzliche Callbacks vononBackStackChangeStarted
undonBackStackChangeCommitted
erweitert. Diese werden mit jedemFragment
direkt vor dem Hinzufügen/Entfernen aus dem Back-Stack des Fragments bzw. direkt nach dem Commit der Transaktion aufgerufen. FragmentStrictMode
hat ein neuesWrongNestedHierarchyViolation
hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht zumchildFragmentManager
des übergeordneten Elements hinzugefügt wird.- 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, die von diesen Methoden aufgerufen werden, immer sofort zum Absturz gebracht würden. DialogFragment
bietet jetzt über dierequireComponentDialog()
API Zugriff auf die zugrunde liegendeComponentDialog
.- Das Fragment hängt jetzt vom Lebenszyklus
2.6.1
ab. - Das Fragment hängt jetzt von SavedState
1.2.1
ab. - Das Fragment hängt jetzt von ProfileInstaller
1.3.0
ab. Das Artefakt
fragment-testing-manifest
trennt die Manifesteinträge vom Rest der Komponenten zum Fragmenttest. Sie haben dann folgende Möglichkeiten: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
wurde veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Problem behoben, bei dem
ActivityResult
s mit dem falschen Anfragecode gesendet wurden, wenn mehrerestartActivityForResult
-Anfragen hintereinander gestellt wurden. (If0b9d, b/249519359) - Es wurde ein Problem behoben, bei dem
onBackStackChangeListener
-Callbacks für Transaktionen gesendet wurden, die den Back-Stack nicht änderten, wenn sie mit Transaktionen kombiniert wurden, die dies tun. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19. April 2023
androidx.fragment:fragment-*:1.6.0-beta01
wurde veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Die Verwendung von
postponeEnterTransition
mit einem Zeitlimit und das anschließende Ersetzen des verschobenen Fragments führt nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110) - Die neuen
onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks senden ein Fragment jetzt nur einmal, auch wenn mehrere Transaktionen dasselbe Fragment enthalten. (Ic6b69)
Version 1.6.0-alpha09
5. April 2023
androidx.fragment:fragment-*:1.6.0-alpha09
wurde 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 sie jetzt alle Build-Fehler ausgeben, wenn sie nicht aus dem Hauptthread aufgerufen werden, und nicht warten, bis sie zur Laufzeit fehlschlagen. (IC9665, b/236538905)
Fehlerkorrekturen
- Ein Fehler in
FragmentManager
wurde behoben, bei dem das Speichern und Wiederherstellen im selben Frame zu einem Absturz führte. (Ib36af, b/246519668) OnBackStackChangedListener
-onBackStackChangeStarted
- undonBackStackChangeCommitted
-Callbacks werden jetzt nur dann ausgeführt, wenn derFragmentManager
-Back-Stack geändert wird. (I66055, b/274788957)
Version 1.6.0-alpha08
22. März 2023
androidx.fragment:fragment-*:1.6.0-alpha08
wurde veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Verhaltensänderung
- Das Timing des
OnBackStackChangedListener.onBackStackChangeCommited
-Callbacks wurde so angepasst, dass es vor der Ausführung der Fragmentvorgänge ausgeführt wird. Dadurch wird sichergestellt, dass an den Callback niemals ein getrenntes Fragment weitergegeben wird. (I66a76, b/273568280)
Fehlerkorrekturen
- Ab Fragment
1.5.6
: Ein Problem wurde behoben, bei dem das Aufrufen vonclearFragmentResultListener
in einemsetFragmentResultListener
nicht funktionierte, wennLifecycle
bereitsSTARTED
war und bereits ein Ergebnis 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
wurde veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
Fehlerkorrekturen
- Ab Fragment
1.5.6
: Ein Problem wurde behoben, bei dem das Entfernen eines Fragments, unabhängig davon, ob es Menüelemente hinzugefügt hat, ungültig wurde. (50f098, b/244336571)
Version 1.6.0-alpha06
22. Februar 2023
androidx.fragment:fragment-*:1.6.0-alpha06
wurde 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
wurde veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die
FragmentManager.OnBackStackChagnedListener
-Oberfläche bietet jetzt zwei zusätzliche Callbacks,onBackStackChangeStarted
undonBackStackChangeCommitted
, die zusätzliche Informationen ermöglichen und steuern, wann Back-Stack-Änderungen inFragmentManager
erfolgen. (Ib7ce5, b/238686802)
API-Änderungen
- Die 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
wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
hat ein neuesWrongNestedHierarchyViolation
hinzugefügt, das erkennt, wenn ein untergeordnetes Fragment in der Ansichtshierarchie des übergeordneten Elements verschachtelt, aber nicht zumchildFragmentManager
des übergeordneten Elements hinzugefügt wird. (I72521, b/249299268)
Änderungen im Verhalten
- Fragmente stellen jetzt ihren
SavedStateRegistry
-Status vor demonAttach()
wieder her, damit sie für alle Methoden des höheren Lebenszyklus verfügbar sind. (I1e2b1)
API-Änderungen
- Das Artefakt
fragment-testing-manifest
trennt die Manifesteinträge vom Rest der Komponenten zum Fragmenttest. Sie haben dann folgende Möglichkeiten:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Dadurch werden Konflikte aufgrund von Versionsabweichungen zwischen fragment-testing
und androidx.test
vermieden.(I8e534, b/128612536)
Fehlerkorrekturen
- Ab Fragment
1.5.5
: Der StatusViewModel
wird in Fragmenten 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
wurden veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Klassen, die
DialogFragment
erweitern, müssen jetzt „super“ in ihrenonDismiss()
-Überschreibungen aufrufen. (I14798, b/238928865)
Fehlerkorrekturen
- Regressionen behoben, die durch die Integration der neuen Anbieter-Callback-Schnittstellen (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) verursacht wurden, um sicherzustellen, dass Fragmente immer die richtigen Callbacks erhalten. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2
Version 1.6.0-alpha02
24. August 2022
androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
und androidx.fragment:fragment-testing:1.6.0-alpha02
wurden veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Aus Fragment
1.5.2
: Ein Problem wurde behoben, bei dem das gleichzeitige Ausführen einerpopBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass bei verlassenen Fragmenten der 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
wurden veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Änderungen im Verhalten
- Der gespeicherte Status von
Fragment
s wurde vollständig auf den Status der privaten Bibliothek (benutzerdefinierteParcelable
-Klassen) und den vom Entwickler bereitgestellten Status aufgeteilt. Dieser Status wird jetzt immer in einerBundle
gespeichert, mit der genau ermittelt werden kann, woher der Status eines Fragments stammt. (b/207158202)
Fehlerkorrekturen
- Aus Fragment
1.5.1
: Beheben Sie eine Regression inDialogFragmentCallbacksDetector
, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zum Absturz von Lint führte. (b/237567009)
Aktualisierung der Abhängigkeit
- Von Fragment
1.5.1
: Die Fragmentbibliothek hängt jetzt vom Lebenszyklus2.5.1
ab. (Id204c) - Aus Fragment
1.5.1
: Die Fragmentbibliothek hängt jetzt von der Aktivität1.5.1
ab. (I10f07)
Version 1.5
Version 1.5.7
19. April 2023
androidx.fragment:fragment:1.5.7
, androidx.fragment:fragment-ktx:1.5.7
und androidx.fragment:fragment-testing:1.5.7
wurden veröffentlicht. Version 1.5.7 enthält diese Commits.
Fehlerkorrekturen
- Die Verwendung von
postponeEnterTransition
mit einem Zeitlimit und das anschließende Ersetzen des verschobenen Fragments führt nicht mehr zum Verlust des verschobenen Fragments. (I2ec7d, b/276375110)
Version 1.5.6
22. März 2023
androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
und androidx.fragment:fragment-testing:1.5.6
wurden veröffentlicht. Version 1.5.6 enthält diese Commits.
Fehlerkorrekturen
- 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)
- Das Aufrufen von
clearFragmentResultListener
insetFragmentResultListener
funktionierte nicht, wennLifecycle
bereitsSTARTED
war und bereits ein Ergebnis verfügbar war. Dieses Problem wurde behoben. (If7458)
Version 1.5.5
7. Dezember 2022
androidx.fragment:fragment:1.5.5
, androidx.fragment:fragment-ktx:1.5.5
und androidx.fragment:fragment-testing:1.5.5
wurden veröffentlicht. Version 1.5.5 enthält diese Commits.
Fehlerkorrekturen
- Fragmente speichern den Status
ViewModel
nicht mehr fälschlicherweise als Teil des gespeicherten Status der Ansichts-Registry. (I10d2b, b/253546214)
Version 1.5.4
24. Oktober 2022
androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
und androidx.fragment:fragment-testing:1.5.4
wurden veröffentlicht. Version 1.5.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem eine benutzerdefinierte
FragmentController
mit einem Host, der keine Anbieter-Callback-Schnittstelle (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) implementiert hat, und das Aufrufen der eingestellten Weiterleitungsfunktion keine Weiterleitung an untergeordnete Fragmente auslöste. (I9b380)
Version 1.5.3
21. September 2022
androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
und androidx.fragment:fragment-testing:1.5.3
wurden veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass Fragmente im Back-Stack
onMultiWindowModeChanged()
-,onPictureInPictureModeChanged()
-,onLowMemory()
- undonConfigurationChanged()
-Callbacks erhielten. (I34581, I8dfe6, b/242570955) - Verschachtelte untergeordnete Fragmente erhalten 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
- Es wurde ein Problem behoben, bei dem das gleichzeitige Ausführen einer
popBackStack()
- und einerreplace()
-Transaktion dazu führen konnte, dass bei verlassenen Fragmenten der 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
- Es wurde eine Regression im
DialogFragmentCallbacksDetector
behoben, bei der die Verwendung der mit AGP 7.4 gebündelten Lint-Version zum Absturz von Lint führen würde. (b/237567009)
Aktualisierung der Abhängigkeit
- Die Fragmentbibliothek hängt jetzt vom Lebenszyklus
2.5.1
ab. (Id204c) - Die Fragmentbibliothek hängt jetzt von der Aktivität
1.5.1
ab. (I10f07)
Version 1.5.0
29. Juni 2022
androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
und androidx.fragment:fragment-testing:1.5.0
wurden veröffentlicht. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- CreationExtras-Integration:
Fragment
kann jetzt eine zustandsloseViewModelProvider.Factory
überCreationExtras
des Lebenszyklus2.5.0
bereitstellen. - Integration des Komponentendialogfelds:
DialogFragment
verwendet jetztComponentDialog
über die Aktivität1.5.0
als Standarddialogfeld, das vononCreateDialog()
zurückgegeben wird. - Refaktorierung des gespeicherten Instanzstatus: Fragmente haben begonnen, die Art und Weise zu ändern, wie sie ihren Instanzstatus speichern. Damit soll klar identifiziert werden, welcher Status im Fragment gespeichert wurde und aus welcher Quelle er stammt. Zu den aktuellen Änderungen gehören:
<ph type="x-smartling-placeholder">
- </ph>
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einerBundle
statt direkt in einem benutzerdefiniertenParcelable
.- Über die
Fragment Result APIs
festgelegte Ergebnisse, die noch nicht übermittelt wurden, werden jetzt getrennt vom internen Status derFragmentManager
gespeichert. - Der mit jedem einzelnen Fragment verknüpfte Status wird jetzt getrennt vom internen Status des
FragmentManager
gespeichert. So können Sie die Menge des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs imFragment
-Fehlerbehebungsprotokoll korrelieren.
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 der Aktivität1.4.0
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste äquivalente API-Oberfläche, die von Fragmenten verwendet werden sollten.
Version 1.5.0-rc01
11. Mai 2022
androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
und androidx.fragment:fragment-testing:1.5.0-rc01
wurden veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Refaktorierung des gespeicherten Instanzstatus
- Der mit jedem einzelnen Fragment verknüpfte Status wird jetzt getrennt vom internen Status des
FragmentManager
gespeichert. So können Sie die Menge des gespeicherten Status, der einem einzelnen Fragment zugeordnet ist, mit den eindeutigen IDs im Debugging-Logging für Fragmente korrelieren. (a153e0, b/207158202)
Version 1.5.0-beta01
20. April 2022
androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
und androidx.fragment:fragment-testing:1.5.0-beta01
wurden veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
DialogFragment
hat eine neuedismissNow
-Methode hinzugefügt, diecommitNow
für Parität mit dershowNow
-Funktion verwendet. Dadurch wirdDialog
nicht sofort geschlossen, sondern nur der Status vonFragmentManager
synchron aktualisiert. (I15c36, b/72644830)
Refaktorierung des gespeicherten Instanzstatus
FragmentManager
speichert den gespeicherten Instanzstatus jetzt in einerBundle
statt direkt in einem benutzerdefiniertenParcelable
. Dies ist der erste Schritt, um zusätzliche Transparenz darüber zu schaffen, was tatsächlich von Fragmenten gespeichert wird. (I93807, b/207158202)- Über die Fragment Result APIs festgelegte Ergebnisse, die noch nicht übermittelt wurden, werden jetzt getrennt vom internen Status der
FragmentManager
gespeichert. Dadurch erhalten Sie zusätzliche Transparenz darüber, welche Ergebnisse als Teil des gespeicherten Instanzstatus gespeichert werden. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6. April 2022
androidx.fragment:fragment:1.5.0-alpha05
, androidx.fragment:fragment-ktx:1.5.0-alpha05
und androidx.fragment:fragment-testing:1.5.0-alpha05
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 verwendet werden. Informationen hierzu finden Sie in den Versionshinweisen zu Fragment1.5.0-alpha04
. (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 isoliert getestet werden können. Die in der Aktivität1.4.0-alpha01
hinzugefügten APIsMenuHost
undMenuProvider
bieten eine testbare, lebenszyklusbewusste äquivalente API-Oberfläche, die von Fragmenten verwendet werden sollten. (I50a59, I20758)
Fehlerkorrekturen
SavedStateViewFactory
unterstützt jetzt die Verwendung vonCreationExtras
, auch wenn es mit einemSavedStateRegistryOwner
initialisiert wurde. Wenn Extras angegeben werden, werden die initialisierten Argumente ignoriert. (I6c43b, b/224844583)
Version 1.5.0-alpha03
23. Februar 2022
androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
und androidx.fragment:fragment-testing:1.5.0-alpha03
wurden veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Sie können jetzt
CreationExtras
anby viewModels()
übergeben undby activityViewModels()
-Funktionen. (Ibefe7, b/217601110)
Änderungen im Verhalten
- In
DialogFragment
wird jetztComponentDialog
als Standard verwendet Dialogfeld, das vononCreateDialog()
zurückgegeben wurde. (If3784, b/217618170)
Version 1.5.0-alpha02
9. Februar 2022
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
und androidx.fragment:fragment-testing:1.5.0-alpha02
wurden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
Neue Funktionen
FragmentStrictMode
bietet jetzt die Möglichkeit für private Drittanbieter-Fragmente, bestimmte Strafen bei Verstößen zu umgehen, indemallowViolation()
mit dem Klassennamen verwendet wird. (I8f678)
Version 1.5.0-alpha01
26. Januar 2022
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
und androidx.fragment:fragment-testing:1.5.0-alpha01
wurden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
Neue Funktionen
Fragment
kann jetzt in ViewModel CreationExtras eingebunden werden, die im Rahmen des Lebenszyklus2.5.0-alpha01
eingeführt wurden. (I3060b, b/207012585)
Fehlerkorrekturen
- Aus Fragment
1.4.1
:FragmentContainerView
löst keinen illegalen Status mehr aus Ausnahme, wenn aus XML generierte Ansichts-IDs negative Werte haben. (IC185b, b/213086140) - Von Fragment
1.4.1
: Wenn eine benutzerdefinierte Lambda-Funktion fürownerProducer
mit der Lazy-Funktionby viewModels()
mit der Lazy-Funktionby viewModels()
verwendet wird, wird jetzt diedefaultViewModelProviderFactory
von diesem Inhaber verwendet, wenn kein benutzerdefiniertesViewModelProvider.Factory
angegeben wurde, anstatt immer die Factory des Fragments zu verwenden. (I56170, b/214106513) - Absturz behoben, der beim ersten Zugriff auf ein
ViewModel
über einenregisterForActivityResult()
-Callback einerFragment
erfolgte. (IEa2b3)
Version 1.4
Version 1.4.1
26. Januar 2022
androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
und androidx.fragment:fragment-testing:1.4.1
wurden veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
FragmentContainerView
löst keinen illegalen Status mehr aus Ausnahme, wenn aus XML generierte Ansichts-IDs negative Werte haben. (IC185b, b/213086140)- Wenn Sie eine benutzerdefinierte Lambda-Funktion vom Typ „
ownerProducer
“ mit der Lazy-Funktion „by viewModels()
“ verwenden, wird jetzt diedefaultViewModelProviderFactory
von diesem Inhaber verwendet, wenn eine benutzerdefinierteViewModelProvider.Factory
wird nicht angegeben, statt immer das Fragment des Fragments zu verwenden. Factory. (I56170, b/214106513)
Version 1.4.0
17. November 2021
androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
und androidx.fragment:fragment-testing:1.4.0
wurden veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Die
FragmentStrictMode
APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre Anwendung oder Bibliotheken, von denen Sie abhängig sind, keine verworfenen Fragment-APIs aufrufen. Wenn ein Verstoß festgestellt wird, können Sie eine Log-Nachricht ausgeben, 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 für eineFragmentManager
mit der neuensetStrictModePolicy()
-Methode festgelegt werden. Diese Richtlinie gilt für dieseFragmentManager
und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. Siehe StrictMode für Fragmente. FragmentContainerView
bietet jetzt einegetFragment()
-Methode, die das Fragment zurückgibt, das zuletzt dem Container 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
In
FragmentScenario
ist jetztCloseable
implementiert, sodass Sie es mit der Kotlin-Methodeuse
oder try-with-resources verwenden können.Hinzugefügt
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, um anzugeben, ob die standardmäßige Animation für den Aktivitätsübergang aktiviert werden soll, die von Ihrem Design in "Fragmente" übernommen wurde.Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue State Manager ist jetzt die einzige verfügbare Option.
Mehrere Back Stacks
FragmentManager
verwaltet einen Back Stack 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 drei neue FragmentManager
APIs erweitert: saveBackStack(String name)
, restoreBackStack(String name)
und clearBackStack(String name)
. Diese APIs verwenden dieselbe name
wie addToBackStack()
, um den Status von FragmentTransaction
und den Status jedes Fragments, 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. 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()
insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („popped“) sowie 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 Back-Stack per Pull ausgeführt werden, wenn der angegebene Name auf dem Back-Stack nicht gefunden wird oder wenn ein Nullname angegeben wird, passiert beisaveBackStack()
nichts, wenn Sie zuvor noch keine Fragment-Transaktion mitaddToBackStack()
mit diesem genauen Namen, der nicht null ist, durchgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und 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 dieser Gruppe von Transaktionen verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back Stack vorgenommen wurden.
- Kein gespeichertes Fragment kann ein beibehaltenes Fragment oder ein beibehaltenes Fragment in seinem transitiven Satz untergeordneter Fragmente sein, um sicherzustellen, dass
FragmentManager
nach dem Speichern des Back-Stacks 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 Back-Stacks: Eine ausführliche Erläuterung.
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
wurden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Übergeordnete Fragmente senden jetzt
onHiddenChanged()
ab in ihrer gesamten Hierarchie, bevor ein eigener Callback gestartet wird. (Iedc20, b/77504618) - Die Tastatur wird jetzt automatisch geschlossen, wenn Sie von einem Fragment mit geöffneter Tastatur bis zu einem Fragment mit Recycler-Ansicht. (I8b842, b/196852211)
DialogFragment
verwendet jetztsetReorderingAllowed(true)
für alle Transaktionen wird erstellt, wenn Sieshow()
,showNow()
, oderdismiss()
(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.
Lint
- Die Lint-Warnung
DetachAndAttachFragmentInSameFragmentTransaction
wurde hinzugefügt, um den Aufruf vondetach()
undattach()
im selbenFragment
im selbenFragmentTransaction
zu erkennen. Da sich diese ergänzenden Vorgänge gegenseitig abbrechen, wenn sie in derselben Transaktion ausgeführt werden, müssen sie in separate Transaktionen aufgeteilt werden, um etwas zu tun. (aosp/1832956, b/200867930) - Der Lint-Fehler
FragmentAddMenuProvider
zur Korrektur der Verwendung des Fragmentlebenszyklus wurde dem Lebenszyklus der Fragmentansicht hinzugefügt, wenn dieaddMenuProvider
API vonMenuHost
verwendet wird. (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 Einstellungsmeldung für
onActivityCreated()
sowohl fürFragment
als auch fürDialogFragment
wurde um weitere Details erweitert. (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
wurden veröffentlicht. Version 1.4.0-alpha09 enthält diese Commits.
Neue Funktionen
- Sie können jetzt
clearBackStack(name)
anrufen, um alle zuvor mitsaveBackStack(name)
gespeicherten Status löschen. (I70cd7)
API-Änderungen
- Die Klasse
FragmentContainerView
wurde in Kotlin neu geschrieben dass diegetFragment
-Funktion Null-Zulässigkeit. (If694a, b/189629145) - FragmentStrictMode ist jetzt in Kotlin geschrieben (I11767, b/199183506).
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem der Status eines Fragments
der mit
setReorderingAllowed(true)
hinzugefügt wurde, und dann sofort vor Ausführung ausstehender Transaktionen entfernt nicht ordnungsgemäß bereinigt werden. (I8ccb8)
Version 1.4.0-alpha08
1. September 2021
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
und androidx.fragment:fragment-testing:1.4.0-alpha08
wurden veröffentlicht. Version 1.4.0-alpha08 enthält diese Commits.
Fehlerkorrekturen
- Die Lint-Prüfung für
UseRequireInsteadOfGet
wurde verbessert, um redundante Klammern besser zu erkennen. (I2d865) - Die Lint-Prüfung für
UseGetLayoutInflater
wurde zur Bearbeitung zusätzlicher Grenzfälle verbessert. (Beispiel: 5423)
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
wurden veröffentlicht. Version 1.4.0-alpha06 enthält diese Commits.
Fehlerkorrekturen
- Problem mit mehreren Back-Ends behoben
beim schnellen Wechsel zwischen Back-Stacks
wird dies als
IllegalStateException
während der Wiederherstellung einesFragmentTransaction
-Vorgangs eine zweite Kopie eines Fragments erscheint. (I9039f) - Folgendes Problem wurde behoben:
FragmentManager
behält eine Kopie des zuvor gespeicherten Zustands bei. übersaveBackStack()
, auch nachdem dieser Bundesstaat wiederhergestellt. (ID 212) - Die Methode
dismissAllowingStateLoss()
vonDialogFragment
stürzten nicht mehr ab, wenn du anrufst nachdem der Status gespeichert wurde, wenn Sie DialogFragment über dasshow(FragmentTransaction, String)
-Methode. (I84422)
Version 1.4.0-alpha05
21. Juli 2021
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
und androidx.fragment:fragment-testing:1.4.0-alpha05
wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Fehlerkorrekturen
- Von Fragment
1.3.6
: Die Ansicht des Fragments ist jetzt korrekt aufGONE
festgelegt, wennhide()
verwendet wird und für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) - Ab Fragment
1.3.6
:FragmentActivity
wird jetzt immer entsperrt Den gespeicherten Status als erster Vorgang im Lebenszyklus -Callbacks überschrieben werden. (I6db7a)
Aktualisierung der Abhängigkeit
- Aus Fragment
1.3.6
: Fragmente sind jetzt von der Aktivität1.2.4
abhängig (I3a66c)
Version 1.4.0-alpha04
30. Juni 2021
androidx.fragment:fragment:1.4.0-alpha04
, androidx.fragment:fragment-ktx:1.4.0-alpha04
und androidx.fragment:fragment-testing:1.4.0-alpha04
wurden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
API-Änderungen
FragmentManager
verwendet jetztSavedStateRegistry
, um seinen Status zu speichern. Die MethodensaveAllState()
undrestoreSavedState()
wurden auch inFragmentController
eingestellt. Wenn SieFragmentController
verwenden, um Fragmente außerhalb vonFragmentActivity
zu hosten, sollten Sie IhreFragmentHostCallbacks
implementierenSavedStateRegistryOwner
. (Iba68e, b/188734238)
Fehlerkorrekturen
- Folgendes Problem wurde behoben:
saveBackStack()
im Rahmen der Unterstützung mehrerer Rückenlehnen Stacks schlagen fehl, wenn sie gleichzeitigFragmentTransaction
ausführen, diereplace()
verwendet haben. (I73137) NullPointerException
behoben, der nach der manuellen Wiederherstellung einer gespeicherten Back-Stack mit mehreren Transaktionen wenn Sie dierestoreBackStack()
API für Back-Stack-Unterstützung. Auch dieses Problem wurde behoben ein Problem, bei demsetReorderingAllowed(true)
nicht für alle Transaktionen geprüft wurde. (I8c593)- Folgendes Problem wurde behoben:
FragmentManager
Fälschlicherweise weiter mit der Wiederherstellung des zuvor gespeicherten Zustands fortfahren von Fragmenten, auch nachdem diese entfernt wurden ausFragmentManager
, wodurch der gespeicherte Zustand um kontinuierlich zu wachsen. (I1fb8e)
Version 1.4.0-alpha03
16. Juni 2021
androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
und androidx.fragment:fragment-testing:1.4.0-alpha03
wurden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- Alle „Fragment StrictMode“-Klassen vom Typ
Violation
wurden mit detaillierteren Fehlermeldungen aktualisiert, in denen die Details des Verstoßes erläutert werden. (b/187871638) <ph type="x-smartling-placeholder">- </ph>
FragmentTagUsageViolation
enthält jetzt mehr detaillierte Fehlermeldung, dass der übergeordnete Container dem das Fragment hinzugefügt worden wäre. (IC33a7)WrongFragmentContainerViolation
hat jetzt mehr eine detaillierte Fehlermeldung mit dem Container, dem das Fragment hinzugefügt wurde. (Ib55f8)- Die Anwendungsfallklassen für
TargetFragmentUsageViolation
Nun gibt es detailliertere Fehlermeldungen, die das Fragment enthalten. die den Verstoß und alle anderen darin enthaltenen Informationen verursacht haben. (Icc6ac) - Die Klassen, die
RetainInstanceUsageViolation
erweitern erhalten Sie jetzt detailliertere Fehlermeldungen, die das Fragment der den Verstoß verursacht hat. (I6bd55) FragmentReuseViolation
hat jetzt mehr eine detaillierte Fehlermeldung, die den vorherigen ID des Fragments. (I28ce2)SetUserVisibleHintViolation
hat jetzt mehr eine detaillierte Fehlermeldung mit Angaben dazu, für den sichtbaren Hinweis festgelegt wurde. (Ib2d5f)
Änderungen im Verhalten
- Die Einschränkung für den Aufruf von
fitsSystemWindows
auf einemFragmentContainerView
wurde rückgängig gemacht. Deine App wird dadurch nicht mehr zum Absturz gebracht. (6b8ddd, b/190622202)
Fehlerkorrekturen
- Aus Fragment
1.3.5
: Eine Regression bei Übergängen von gemeinsam genutzten Elementen, die in Fragment1.3.4
von aosp/1679887 eingeführt wurde, wurde behoben. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
) und freigegebene Elemente lösen keineIndexOutOfBoundsException
mehr aus. (I16484, b/188679569, b/188969304) FragmentManager
stürzt nicht mehr ab, wenn du versuchst, ein entfernendes Fragment ausblenden. (I573dd, b/183634730)- Die Lint-Prüfung
OnCreateDialogIncorrectCallback
zeigt keine längerer Absturz bei der Auswertung einer übergeordneten Variablen. (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 strengen Modusrichtlinie. (I02df6, b/187872638)FragmentStrictMode
unterstützt jetzt die Ausnahme von bestimmtenFragment
-Klassen vom strengen ModusViolation
s, sodass diese Klasse alle Strafen umgehen kann. (Ib4e5d, b/184786736)Die Klasse
FragmentStrictMode
Violation
wurde erweitert, um je nach Verstoß zusätzliche Strukturinformationen hinzuzufügen. So können Sie genau prüfen, was den Verstoß verursacht hat, zusammen mit dem betreffenden Fragment (If5118, b/187871150). JedeViolation
enthält Folgendes:WrongFragmentContainerViolation
enthält jetzt DieViewGroup
, der dieFragment
hinzugefügt werden wollte. (I83c75, b/187871150)TargetFragmentUsageViolation
wurde erweitert auf:SetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
undGetTargetFragmentRequestCodeUsageViolation
, wobeiSetTargetFragmentUsageViolation
das Zielfragment und den Anfragecode enthält. (I741b4, b/187871150)SetUserVisibleHintViolation
enthält jetzt den booleschen Wert, der ansetUserVisibleHint()
übergeben wurde. (I00585, b/187871150)FragmentTagUsageViolation
enthält jetzt Die ViewGroup, in die das<fragment>
-Tag versucht hat, ein Fragment zu erweitern (I5dbbc, b/187871150).FragmentReuseViolation
enthält jetzt die eindeutige ID der vorherigen Instanz derFragment
, die den Verstoß verursacht hat. (I0544d, b/187871150)RetainInstanceUsageViolation
ist jetzt abstrakt und hat zwei abgeleitete Klassen,SetRetainInstanceUsageViolation
undGetRetainInstanceUsageViolation
, die die beiden für die Art des Verstoßes. (Ic81e5, b/187871150)
Änderungen im Verhalten
FragmentContainerView
löst jetzt eine Ausnahme aus, wenn versucht wird, das AttributfitsSystemWindow
programmatisch oder über XML zu ändern. Einfügungen 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
wurden veröffentlicht. 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. Dies verwendet dieselbe Logik wiefindFragmentById()
mit der ID desFragmentContainerView
, ermöglicht aber eine Verkettung des Aufrufs. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Hinzugefügt
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, um anzugeben, ob die standardmäßige Animation für den Aktivitätsübergang aktiviert werden soll, die von Ihrem Design in "Fragmente" übernommen wurde. (I46652)
Mehrere Back Stacks
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. 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()
insofern, als es asynchron ist und dazu führt, dass alle Fragmenttransaktionen auf diesen spezifischen Namen zurückgesetzt werden und umgekehrt werden („popped“) sowie 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 Back-Stack per Pull ausgeführt werden, wenn der angegebene Name auf dem Back-Stack nicht gefunden wird oder wenn ein Nullname angegeben wird, passiert beisaveBackStack()
nichts, wenn Sie zuvor noch keine Fragment-Transaktion mitaddToBackStack()
mit diesem genauen Namen, der nicht null ist, durchgeführt haben. - Der Status aller Fragmente, die aus diesen Transaktionen hinzugefügt wurden, wird gespeichert. Das bedeutet, dass der Ansichtsstatus jedes Fragments gespeichert wird,
onSaveInstanceState()
jedes Fragments aufgerufen und 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 dieser Gruppe von Transaktionen verweisen, damit sie jederzeit wiederhergestellt werden können, unabhängig davon, welche Änderungen in der Zwischenzeit am Back Stack vorgenommen wurden.
- Kein gespeichertes Fragment kann ein beibehaltenes Fragment oder ein beibehaltenes Fragment in seinem transitiven Satz untergeordneter Fragmente sein, um sicherzustellen, dass
FragmentManager
nach dem Speichern des Back-Stacks keine Verweise auf gespeicherte Fragmente zurückgibt.
Ähnlich wie bei saveBackStack()
passiert auch restoreBackStack()
nichts, wenn Sie saveBackStack()
noch nicht mit demselben Namen aufgerufen haben. (b/80029773)
Fragment StrictMode
Die FragmentStrictMode
APIs bieten Laufzeitprüfungen, mit denen Sie prüfen können, ob Ihre Anwendung oder Bibliotheken, von denen Sie abhängig sind, keine verworfenen Fragment-APIs aufrufen. Wenn ein Verstoß festgestellt wird, können Sie eine Log-Nachricht ausgeben, 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 für eine FragmentManager
mit der neuen setStrictModePolicy()
-Methode festgelegt werden. Diese Richtlinie gilt für diese FragmentManager
und vorübergehend für alle untergeordneten Fragmentmanager, die keine eigene Richtlinie festlegen. (Nr. 123, Nr. 131, Nr. 150, b/143774122)
detectFragmentReuse()
erkennt, ob eine zuvor entfernteFragment
-Instanz einemFragmentManager
wieder hinzugefügt wird. Sie sollten niemals mit einerFragment
-Instanz interagieren oder diese beibehalten, nachdem sie gelöscht und aus einerFragmentManager
entfernt wurde. (#142, b/153738653)detectFragmentTagUsage()
erkennt, wenn du das<fragment>
-Tag in deiner Layout-XML verwendest. Du solltest immerFragmentContainerView
verwenden, wenn du Fragmente als Teil deines Layouts aufblähst. (#141, b/153738235)detectWrongFragmentContainer()
erkennt, wenn Sie einem Container ein Fragment hinzufügen, das keinFragmentContainerView
ist. Sie sollten in Ihrem Layout immerFragmentContainerView
als Container für Fragmente verwenden. (Nr. 146, b/181137036)detectRetainInstanceUsage()
erkennt, wenn Sie die eingestellten APIssetRetainInstance()
odergetRetainInstance()
verwenden. (#140, b/153737954)detectSetUserVisibleHint()
erkennt, wenn Sie die verworfenesetUserVisibleHint()
API verwenden. (Nr. 136, b/153738974)detectTargetFragmentUsage()
erkennt, wenn Sie die eingestellten APIssetTargetFragment()
,getTargetFragment()
odergetTargetRequestCode()
verwenden. (Nr. 139, b/153737745)
API-Änderungen
- Die experimentelle API von
FragmentManager.enableNewStateManager(boolean)
wurde entfernt und der neue State Manager ist jetzt die einzige verfügbare Option. (I90036, b/162776418) - In
FragmentScenario
ist jetztCloseable
implementiert, sodass Sie es mit der Kotlin-Methodeuse
oder try-with-resources verwenden können. (#121, b/143774122)
Neue Lint-Prüfungen
- Die
UseGetLayoutInflater
Lint-Prüfung gibt jetzt eine Warnung aus, wennLayoutInflater.from(Context)
innerhalb einerDialogFragment
verwendet wird. Sie sollten immer diegetLayoutInflater()
-Methode des Dialogfragments verwenden, um die entsprechendeLayoutInflater
zu erhalten. (#156, b/170781346) - Die
DialogFragmentCallbacksDetector
-Lint-Prüfung gibt jetzt eine Warnung aus, wennsetOnCancelListener
odersetOnDismissListener
in deronCreateDialog()
-Methode einesDialogFragment
aufgerufen wird. Diese Listener gehören demDialogFragment
selbst und Sie solltenonCancel()
undonDismiss()
überschreiben, um diese Callbacks zu erhalten. (Nr. 171, b/181780047, b/187524311)
Fehlerkorrekturen
- Ab Fragment 1.3.4: Es wurde eine Regression behoben, die in Fragment
1.3.3
eingeführt wurde, wenn dieViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder die Jetpack-Compose-Methode vonviewModel()
innerhalb eines Fragments verwendet wurde. 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) - Aus Fragment 1.3.4: Bei Verwendung von
FragmentContainerView
unter API 29 werden Einfügungen nicht längere Weiterleitungen auf unbestimmte Zeit, wodurch Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben werden. (I1bb78, b/186012452) - Aus Fragment 1.3.4: Sie können Ihr Parcelable jetzt aus dem Fragmentergebnis abrufen nach Prozessabschluss zu erhalten. (I65932, b/187443158)
- Aus Fragment 1.3.4: Wenn in einer ViewGroup ein Wechsel eines gemeinsam genutzten Elements durchgeführt wird, gilt Folgendes:
ViewGroup hat
transitionGroup
auf "false" gesetzt. Dies funktioniert nun ordnungsgemäß. zu übertragen. (I99675)
Externer Beitrag
- Danke, simonschiller, dass du
FragmentScenario
implementiert hast undCloseable
implementiert hast. (#121, b/143774122) - Danke, simonschiller, dass du die gesamte
FragmentStrictMode
API für diese Version hinzugefügt hast. - Vielen Dank, tatocaster, dass du die
UseGetLayoutInflater
Lint-Prüfung hinzugefügt hast. (#156, b/170781346) - Vielen Dank, tatocaster, dass du die
DialogFragmentCallbacksDetector
Lint-Prüfung hinzugefügt hast. (Nr. 171, b/181780047)
Version 1.3
Version 1.3.6
21. Juli 2021
androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
und androidx.fragment:fragment-testing:1.3.6
wurden veröffentlicht. Version 1.3.6 enthält diese Commits.
Fehlerkorrekturen
- Von Fragment
1.4.0-alpha03
:FragmentManager
stürzt nicht mehr ab, wenn du versuchst, ein entfernendes Fragment ausblenden. (I573dd, b/183634730) - Die Ansicht des Fragments wird jetzt korrekt auf
GONE
festgelegt, wennhide()
verwendet wird und für die StammansichttransitionGroup=”true”
festgelegt ist. (aosp/1766655, b/193603427) FragmentActivity
wird jetzt immer entsperrt Den gespeicherten Status als erster Vorgang im Lebenszyklus -Callbacks überschrieben werden. (I6db7a)
Aktualisierung der Abhängigkeit
- Aus Fragment
1.3.6
: Fragmente sind jetzt von der Aktivität1.2.4
abhängig (I3a66c)
Version 1.3.5
16. Juni 2021
androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
und androidx.fragment:fragment-testing:1.3.5
wurden veröffentlicht. 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. Fragmente verarbeiten jetzt Übergangsgruppen korrekt (entweder direkt übertransitionGroup="true"
oder indirekt übertransitionName
oderbackground
) und freigegebene Elemente lösen keineIndexOutOfBoundsException
mehr aus. (I16484, b/188679569, b/188969304)
Version 1.3.4
18. Mai 2021
androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
und androidx.fragment:fragment-testing:1.3.4
wurden veröffentlicht. Version 1.3.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Regression behoben, die in Fragment
1.3.3
bei Verwendung derViewTreeViewModelStoreOwner.get()
API mitViewModelProvider
oder der Jetpack Compose-Methode vonviewModel()
innerhalb eines Fragments bei Verwendung von Hilt eingeführt wurde. In diesen Anwendungsfällen wird jetzt das von Ihrem Fragment bereitgestellteViewModelProvider.Factory
korrekt verwendet, wenn esgetDefaultViewModelProviderFactory()
überschreibt (wie bei@AndroidEntryPoint
-annotierten Fragmenten). 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) - Bei Verwendung von
FragmentContainerView
unter API 29 werden Einfügungen längere Weiterleitung auf unbestimmte Zeit, wodurch Probleme mitBottomNavigationBar
- undFloatingActionButton
-Instanzen behoben werden. (I1bb78, b/186012452) - Sie können Ihr Parcelable jetzt aus dem Fragmentergebnis abrufen nach Prozessabschluss zu erhalten. (I65932, b/187443158)
- Wenn bei einem Übergang von gemeinsam genutzten Elementen in einer ViewGroup der Fehler
ViewGroup hat
transitionGroup
auf "false" gesetzt. Dies funktioniert nun ordnungsgemäß. zu übertragen. (I99675)
Version 1.3.3
21. April 2021
androidx.fragment:fragment:1.3.3
, androidx.fragment:fragment-ktx:1.3.3
und androidx.fragment:fragment-testing:1.3.3
wurden veröffentlicht. Version 1.3.3 enthält diese Commits.
Neue Funktionen
- Die Verwendung von
SavedStateViewModelFactory
funktioniert jetzt bei Verwendung mit demSavedStateRegistryOwner
, der von Verwenden vonViewTreeSavedStateRegistryOwner.get()
mit dem Ansicht des Fragments. (I21acf, b/181577191)
Fehlerkorrekturen
- Es wurde eine in Fragment
1.3.2
eingeführte Regression behoben, die dazu führte, dasspopEnter
-Animationen nicht ausgeführt wurden, wenn einFragmentTransaction
mit einemsetPrimaryNavFragment
-Vorgang per Pop-up übergegangen wurde, wie z. B. diejenigen, die vonNavHostFragment
verwendet wurden. (I38c87, b/183877426) FragmentContainerView
sorgt jetzt dafür, dass jederFragment
ein neuer Satz vonWindowInsets
, wodurch sichergestellt wird, dass jedes Fragment die Einfügungen jetzt unabhängig verarbeiten 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)
Neue Fehlerkorrekturen im State Manager
- Im neuen Fragment State Manager werden Exits jetzt korrekt verarbeitet. 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
- Beim Ausführen von
popBackStack()
- undcommit()
-Vorgängen wird durch den letzten Vorgang die Richtung für alle statt Pop-Animationen und andere Animationen Animationen. (I7072e, b/181142246) - Ansichten innerhalb einer Hierarchie mit gemeinsam genutzten Elementen weisen wird der Übergangsname beim Wechsel von gemeinsam genutzten Elementen gelöscht. (I4d4a6, b/179934757)
Aktualisierung der Abhängigkeiten
- Das Fragment hängt jetzt von der Aktivität 1.2.2 ab, wodurch ein Problem mit der
InvalidFragmentVersionForActivityResult
-Lint-Prüfung der Aktivität bei Verwendung von Fragment 1.3.1 oder höher behoben wurde. - Das Fragment hängt jetzt vom Lebenszyklus 2.3.1 ab.
Version 1.3.1
10. März 2021
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
und androidx.fragment:fragment-testing:1.3.1
wurden veröffentlicht. Version 1.3.1 enthält diese Commits.
Neue Funktionen
- Dialogfelder innerhalb eines
DialogFragment
können jetzt auf ViewTree zugreifen über DecorView erhalten, damitDialogFragment
mitComposeView
verwendet werden kann. (Ib9290, b/180691023)
Fehlerkorrekturen
- Fragmente, die zu einer bereits
RESUMED
-Aktivität aufgestiegen sind, FragmentContainerView wird jetzt nach einer Konfiguration ordnungsgemäß angezeigt. ändern können. (Ie14c8, b/180538371) - Am Ende des Fragments befindet sich kein zusätzliches
}
mehrtoString()
(I54705, b/177761088) - Überschriebene Methoden in FragmentActivity übernehmen nun ordnungsgemäß die Basismethode JavaDoc (I736ce, b/139548782)
- Die Dokumente für
setFragmentResult
undsetFragmentResultListener
haben ihre Parameter-Dokumente aktualisiert, um zu verdeutlichen, dass sie Nullables (I990ba, b/178348386)
Neue Fehlerkorrekturen im State Manager
- Ein Speicherleck in Fragmenten wurde behoben, das durch
mFocusedView
verursacht wurde (Ib4e9e, b/179925887). - Fragmente rufen jetzt
onCreateOptionsMenu
ordnungsgemäß auf, wenn sie Folgendes verwenden: Transaktionen ein-/ausblenden (I8bce8, b/180255554) - Untergeordnete Fragmente mit Übergängen, die vor dem Layout des Fragments beginnen, erreichen nun ordnungsgemäß
RESUMED
(Ic11e6, b/180825150) - Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, sind jetzt immer Geh zuRESUMED
(I452ac, (I9fa49)
Aktualisierung der Abhängigkeiten
- 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
wurden veröffentlicht. Version 1.3.0 enthält diese Commits.
Große Ä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: Die in Activity
1.2.0
eingeführteActivityResultRegistry
API wird jetzt unterstützt, um Abläufe mitstartActivityForResult()
+onActivityResult()
undrequestPermissions()
+onRequestPermissionsResult()
zu verarbeiten, ohne Methoden in Ihrem Fragment zu überschreiben. Zusätzlich werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie im aktualisierten Abschnitt Ergebnisse aus einer Aktivität abrufen.- In dieser Version wurden mehrere Probleme im Zusammenhang mit ungültigen Anforderungscodes und dem Senden von Berechtigungsanfragen behoben, die verhindern, dass die Activity Result API in früheren Versionen von
FragmentActivity
funktioniert. Sie müssen ein Upgrade auf Fragment 1.3.0 ausführen, um die Activity Result APIs in einemFragmentActivity
oderAppCompatActivity
verwenden zu können.
- In dieser Version wurden mehrere Probleme im Zusammenhang mit ungültigen Anforderungscodes und dem Senden von Berechtigungsanfragen behoben, die verhindern, dass die Activity Result API in früheren Versionen von
Fragment Result API: Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf
FragmentManager
hinzugefügt. Dies funktioniert für Hierarchiefragmente (übergeordnet/untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur dann an Ihr Fragment gesendet werden, wenn es mindestens den WertSTARTED
hat. 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. Eine neueFragmentOnAttachListener
wurde hinzugefügt, um eine flexiblere Alternative zu bieten. Sie ermöglicht das Delegieren vononAttachFragment()
an separate, testbare Listener und Unterstützung für das Hinzufügen eines Listeners zu FragmentManagers, mit Ausnahme des direkten untergeordneten FragmentManagers.FragmentScenario
-Verbesserungen: Die KlasseFragmentScenario
aus dem Artefaktfragment-testing
wurde in Kotlin neu geschrieben und einige Verbesserungen erhalten: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 anfänglichenLifecycle.State
, um das Bestätigen des Fragmentstatus zu unterstützen, bevor zum ersten Mal zu jederLifecycle.State
gewechselt wird.- Es gibt jetzt eine Alternative zur
FragmentScenario
API vononFragment
in Form der Kotlin-verbesserten ErweiterungsmethodewithFragment
, mit der Sie einen Wert zurückgeben können. Insbesondere werden im gegebenen Block ausgelöste Ausnahmen noch einmal ausgelöst.
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.Änderungen an der
TRANSIT_
-Animation: Die Standardeffekte des Fragments,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, verwenden jetztAnimator
anstelle vonAnimation
. Die zum Bau dieser Animatoren verwendeten Ressourcen sind jetzt privat.Einstellung von
setRetainInstance()
: Die MethodesetRetainInstance()
für Fragmente wurde eingestellt. Mit der Einführung von ViewModels haben Entwickler eine spezielle API zum Beibehalten des Zustands, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Auf diese Weise können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den spezifischen Status, den sie beibehalten möchten, separat halten. So wird eine gemeinsame Quelle von Datenlecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor desViewModel
und desonCleared()
-Callbacks, den es 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. Siehe Von ViewPager zu ViewPager2 migrieren.
Version 1.3.0-rc02
27. Januar 2021
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
und androidx.fragment:fragment-testing:1.3.0-rc02
wurden veröffentlicht. Version 1.3.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem ein übergeordnetes Element
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 ein
hide
-Vorgang mit einemAnimation
-Objekt ausgeführt wurde. würde das versteckte Fragment am Ende der Animation blinken. (I57e22, b/175417675) - Fragmente mit Übergängen, die vor der Ansichtshierarchie hinzugefügt wurden
jetzt richtig angebracht und
RESUMED
erreicht. (I1fc1d, b/177154873)
Neue Fehlerkorrekturen im State Manager
- Die Ansicht
Lifecycle
des Fragments verarbeitet jetzt ordnungsgemäß Fälle, in denen die Ansicht des Fragments gelöscht wird, bevor dasLifecycle
CREATED
erreicht. Ausnahmen wie „Kein Ereignis ab INITIALIZED“ werden vermieden. (eda2bd, b/176138645) - Fragmente, die ein
Animator
verwenden, werden jetzt in der richtigen Reihenfolge angezeigt, wennFragmentContainerView
. (Id9aa3, b/176089197)
Version 1.3.0-rc01
16. Dezember 2020
androidx.fragment:fragment:1.3.0-rc01
, androidx.fragment:fragment-ktx:1.3.0-rc01
und androidx.fragment:fragment-testing:1.3.0-rc01
wurden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
Fehlerkorrekturen
onPrepareOptionsMenu()
folgt nun derselben Logik wieonCreateOptionsMenu()
und wird nicht mehr aufgerufen, wenn ein übergeordnetes Fragment ruftsetMenuVisibility(false)
auf. (Id7de8, b/173203654)
Neue Fehlerkorrekturen im State Manager
- Das Leck und das visuelle Artefakt beim Hinzufügen wurden behoben.
ein Fragment mit einem
Animation
zu einemFragmentContainerView
und unterbricht den mit einer Pop-Operation hinzufügen. (I952d8) - Ein Problem wurde behoben, durch das die Fragmentansicht
bleiben in der Ansichtshierarchie erhalten, wenn sie während
onCreate()
- oderonViewCreated()
-Methode. (I8a7d5) - Der Fokus wird jetzt ordnungsgemäß in den Stammansichten des Fragments wiederhergestellt, wenn werden sie fortgesetzt. (Ifc84b)
- Kombinieren von Pop- und Ersetzungsvorgängen im selben Fragment werden nun 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 zu Kotlin konvertiert, wobei die Quell- und Binärkompatibilität durch die Nutzung der funktionalen Schnittstellen von Kotlin 1.4 fürFragmentAction
beibehalten wurde. (I19d31)
Änderungen im Verhalten
- FragmentContainerViews, die ein Fragment nicht mithilfe des Attributs
class
oderandroid:name
in die Höhe treiben, können jetzt außerhalb vonFragmentActivity
verwendet werden. (Id4397, b/172266337) - Wenn Sie versuchen, den maximalen Lebenszyklus eines Fragments auf
DESTROYED
festzulegen, wird jetzt einIllegalArgumentException
ausgelöst (Ie7651, b/170765622). - Beim Initialisieren eines Fragmentszenarios mit dem Status
DESTROYED
wird jetzt einIllegalArgumentException
ausgelöst (I73590, b/170765622).
Neue Fehlerkorrekturen im 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, bei dem Fragmente mit einem Exit-
Animation
nicht ordnungsgemäß gelöscht wurden. (I83d65) - Fragmente, deren Effekte sich inzwischen umkehren abbrechen und mit dem richtigen Eingabeeffekt neu starten. (I62226, b/167092035)
- Der Exit
Animator
einerhide()
wurde nicht ausgeführt. Dieses Problem wurde behoben. (Id7ffe) - Fragmente werden jetzt korrekt angezeigt, wenn sie verschoben wurden, und dann sofort gestartet. (Ie713b, b/170022857)
- Fragmente, die ihre fokussierte Ansicht während einer Animation entfernen, versuchen nicht mehr, den Fokus auf der getrennten Ansicht wiederherzustellen, sobald sie
RESUMED
erreichen (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
wurden veröffentlicht. 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
- Androidx auf Kotlin 1.4 aktualisieren (Id6471, b/165307851, b/165300826)
Änderungen im Verhalten
- Fragment-Ressourcendateien wurden korrekt als privat gekennzeichnet. (aosp/1425237)
Fehlerkorrekturen
- Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, werden jetzt korrekt dargestellt. Warten, bis ihre Ansichten einem Container hinzugefügt wurden, bevor sie zu STARTED (I02f4c) übergehen - Bei sichtbaren Fragmenten und dann bei
setMaxLifecycle()
bisCREATED
wird der Exit-Effekt jetzt korrekt ausgeführt. (b/165822335) - Das Entfernen eines getrennten Fragments, das nicht dem Back Stack hinzugefügt wurde, verursacht kein Speicherleck mehr. Mit freundlicher Genehmigung von Nicklas Ansman Giertz! (b/166489383)
- Aktive Fragmente haben jetzt immer einen Nicht-Null-
FragmentManager
und Fragmente mit einem Nicht-Null-FragmentManager
werden immer als aktiv angesehen. (aosp/1422346) - Für die Standardeffekte des Fragments,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
, wird jetztAnimator
anstelle vonAnimation
verwendet. (b/166155034)
Neue Fehlerkorrekturen im State Manager
- Fragmente stellen nun ihren Ansichtsfokus von direkt vor Beginn der Animation. (ICC256)
- Fragmente, die nur ein gemeinsames Element haben, gehen jetzt über ihre Spezialeffekte ordnungsgemäß abschließen, d. h. sie bewegen sich ihren endgültigen Zustand (Iaebc7, b/166658128)
- Fragmentansichten werden jetzt immer aus dem Container entfernt bevor sie zerstört werden. (ID5876)
- Der neue Zustandsmanager entfernt nun konsequent die bevor Sie die Eingabe hinzufügen. (I41a6e)
- Explizite Änderungen an der Sichtbarkeit einer Fragmentansicht werden jetzt vom neuen Statusmanager berücksichtigt. Wenn Sie also die Ansicht eines aufrufenden Fragments auf
INVISIBLE
setzen, bevor die Animation beginnt, bleibt sie unsichtbar. (b/164481490) - Fragmente priorisieren jetzt
Animators
gegenüberAnimations
, was bedeutet, dass ein Fragment mit beiden nur denAnimator
ausführt und dasAnimation
ignoriert. (b/167579557) - Der neue Zustandsmanager sorgt nicht mehr dafür, dass Fragmente bei der Eingabe von Animationen blinken. (b/163084315)
Bekanntes Problem
Wenn Sie den neuen Zustandsmanager verwenden und während eines Spezialeffekts auf „Zurück“ drücken, anstatt zum vorherigen Fragment zurückzukehren, wird das alte Fragment nie wieder hinzugefügt, was zu einem leeren Bildschirm führt. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19. August 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
und androidx.fragment:fragment-testing:1.3.0-alpha08
wurden veröffentlicht. Version 1.3.0-alpha08 enthält diese Commits.
Neuer State Manager
Diese Version enthält eine umfassende Refaktorierung der internen Statusverwaltung von FragmentManager
, die sich auf die Weiterleitung 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)
kann gesteuert werden, ob FragmentManager den neuen State Manager verwendet. (I7b6ee)
Die folgenden Probleme werden nur bei Verwendung des neuen Statusmanagers behoben:
- Das vorherige Fragment eines
replace
-Vorgangs wird nun korrekt angehalten, bevor das neue Fragment gestartet wird. (b/161654580) - Fragmente verhindern jetzt, dass mehrere konkurrierende Animationen auf denselben Fragmenten stattfinden. Dadurch werden Fälle vermieden, in denen ein
Animation
alleTransition
-Effekte überschreiben würde oder sowohl einAnimator
als auch einTransition
bei einem einzelnen Fragment ausgeführt werden. (b/149569323) enterTransition
undexitTranstion
aller Fragmente, die ein- und wieder verlassen, werden jetzt ausgeführt und nicht mehr nur das letzte eintretende und das erste verlassende Fragment. (b/149344150)- Verschobene Fragmente bleiben nicht mehr im Status
CREATED
hängen, sondern werden stattdessen zusammen mit anderen Fragmenten inSTARTED
verschoben. (b/129035555) - Es wurde ein Problem behoben, bei dem
FragmentManager
Vorgänge in falscher Reihenfolge ausführte, wenn eine verschobene neu angeordnete Transaktion mit einer nicht neu angeordneten 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 nicht mehr
onCreateView()
für Fragmente auf, die gelöscht werden, wenn das Fragment sie ersetzt. (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 angibt, dass dies nicht zulässig ist, anstatt nach einer Konfigurationsänderung unbemerkt keine Ergebnisse zu liefern. (b/162255449) FragmentActivity
verwendet jetzt die in Activity1.2.0-alpha08
eingeführteOnContextAvailableListener
API, um den Status vonFragmentManager
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, führt das direkte Festlegen der Sichtbarkeit der Stammansicht des Fragments nach
onViewCreated()
und voronResume()
dazu, dass die von Ihnen festgelegte Sichtbarkeit vonFragmentManager
überschrieben wird, der 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
wurden veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.
Neue Funktionen
FragmentScenario
unterstützt jetzt das Festlegen einer Initiale Lebenszyklusstatus vonCREATED
,STARTED
oderRESUMED
anstatt das Fragment immer in denRESUMED
zu verschieben, Bundesstaat. (b/159662750)- Der
FragmentScenario
API vononFragment
wurde eine Alternative in Form der mit Kotlin reifizierten ErweiterungsmethodewithFragment
hinzugefügt, mit der Sie einen Wert zurückgeben können. Insbesondere werden im gegebenen Block ausgelöste Ausnahmen noch einmal ausgelöst. (b/158697631)
Änderungen im Verhalten
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. (b/156527405)- Der 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) - Beim Aufrufen von
clearFragmentResultListener
wird jetzt Folgendes gelöscht: Beobachten des Lebenszyklus. (b/159274993)
Version 1.3.0-alpha06
10. Juni 2020
androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
und androidx.fragment:fragment-testing:1.3.0-alpha06
wurden veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.
Neue Funktionen
- Der
onAttachFragment()
-Callback amFragmentActivity
undFragment
wurden verworfen. Ein neuesFragmentOnAttachListener
wurde hinzugefügt zu eine flexiblere Alternative bieten, vononAttachFragment()
, um testbare Listener zu trennen und Unterstützung für das Hinzufügen eines Listeners zu FragmentManagers außer dem direkten untergeordneten FragmentManager. (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) - Es wurde ein Problem behoben, bei dem die Lint-Prüfung
UseRequireInsteadOfGet
die verkettete Nutzung der Operatoren?.
und!!
nicht korrekt verarbeitet hat. (b/157677616)
Version 1.3.0-alpha05
20. Mai 2020
androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
und androidx.fragment:fragment-testing:1.3.0-alpha05
wurden veröffentlicht. 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 jetzt einBundle
bzw.FragmentResultListener
, das nicht null ist. 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 eine Lambda-Funktion verwenden, sind jetzt alsinline
gekennzeichnet. (b/155323404)
Änderungen im Verhalten
- 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 über den No-Argument-Konstruktor Ihrer abgeleiteten Klassen aufgerufen werden sollten, wenn die StandardeinstellungFragmentFactory
verwendet wird. (b/153042497)
Version 1.3.0-alpha04
29. April 2020
androidx.fragment:fragment:1.3.0-alpha04
, androidx.fragment:fragment-ktx:1.3.0-alpha04
und androidx.fragment:fragment-testing:1.3.0-alpha04
wurden veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.
Neue Funktionen
- Unterstützung für die Übergabe von Ergebnissen zwischen zwei Fragmenten über neue APIs auf
FragmentManager
hinzugefügt. Dies funktioniert für Hierarchiefragmente (übergeordnet/untergeordnet), DialogFragments und Fragmente in Navigation und sorgt dafür, dass Ergebnisse nur dann an Ihr Fragment gesendet werden, wenn es mindestens den WertSTARTED
hat. (b/149787344)
API-Änderungen
- Die Zielfragment-APIs wurden eingestellt. Um Daten zwischen Fragmenten zu übergeben, sollten stattdessen die neuen Fragment Result APIs verwendet werden. (b/149787344)
- Die APIs
startActivityForResult()
/onActivityResult()
undrequestPermissions()
/onRequestPermissionsResult()
für Fragment wurden eingestellt. Verwende die Activity Result APIs. (aosp/1290887) - Nicht abwärtskompatible Änderung von Aktivität
1.2.0-alpha04
: Die MethodeprepareCall()
wurde inregisterForActivityResult()
umbenannt. (aosp/1278717)
Fehlerkorrekturen
- Die
getViewLifecycleOwner()
des Fragments wird nun beendet, bevoronSaveInstanceState()
aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. (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
-Problem wurde behoben, das beim Hinzufügen eines Fragments zur Ansichtshierarchie einerDialogFragment
mitFragmentContainerView
hinzugefügt wurde. (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
wurden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
prepareCall
-Methoden fürFragment
sind jetztfinal
. (b/152439361)
Fehlerkorrekturen
- Eine in Fragment
1.3.0-alpha02
bei Verwendung vonBottomSheetDialogFragment
eingeführte Regression wurde behoben. (b/151652127, aosp/1263328, aosp/1265163) - Ein Absturz bei der Verwendung von
prepareCall
aus einem Fragment nach einer Konfigurationsänderung wurde behoben. (b/152137004) - Ein Problem wurde behoben, bei dem Übergänge mit gemeinsam genutzten Elementen und Exits bei der Verwendung von
setTargetFragment()
ignoriert wurden. (b/152023196) - Von Fragment
1.2.4
: Die Fragment ProGuard-Regeln wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338) - In Fragment
1.2.4
: Die Lint-RegelFragmentLiveDataObserve
fürDialogFragment
-Klassen wurde deaktiviert, da Lebenszyklus und Ansichtslebenszyklus immer synchron sind. Dadurch können beim Aufrufen vonobserve
entwederthis
oderviewLifecycleOwner
verwendet werden. (b/151765086)
Abhängigkeitsänderungen
- Fragmente hängen von Activity
1.2.0-alpha03
ab, die erhebliche Verbesserungen an der in Aktivität1.2.0-alpha02
eingeführten Activity Result API aufweist.
Version 1.3.0-alpha02
18. März 2020
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
und androidx.fragment:fragment-testing:1.3.0-alpha02
wurden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- Die in Activity
1.2.0-alpha02
eingeführteActivityResultRegistry
API wird jetzt unterstützt, um die AbläufestartActivityForResult()
+onActivityResult()
undrequestPermissions()
+onRequestPermissionsResult()
zu verarbeiten, ohne die Methoden im Fragment zu überschreiben. Zusätzlich werden Hooks zum Testen dieser Abläufe bereitgestellt. Weitere Informationen finden Sie im aktualisierten Abschnitt Ergebnisse aus einer Aktivität abrufen. (b/125158199)
API-Änderungen
DialogFragment
bietet jetzt einen Konstruktor, der einen@LayoutRes
-Wert verwendet, der das Layout angibt, das durchonCreateView()
standardmäßig aufgebläht werden soll. (b/150327080)- Die Methode
onActivityCreated()
wurde eingestellt. Code, der die Ansicht des Fragments berührt, sollte inonViewCreated()
erfolgen, das direkt voronActivityCreated()
aufgerufen wird. Anderer Initialisierungscode sollte sich inonCreate()
befinden. 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) - Von Fragment
1.2.3
: Der Umfang der im Fragment enthaltenen ProGuard-Regeln 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
wurden veröffentlicht. 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 Beibehalten des Zustands, die mit Aktivitäten, Fragmenten und Navigationsdiagrammen verknüpft werden kann. Auf diese Weise können Entwickler ein normales, nicht beibehaltenes Fragment verwenden und den spezifischen Status, den sie beibehalten möchten, separat halten. So wird eine gemeinsame Quelle von Datenlecks vermieden, während die nützlichen Eigenschaften einer einzelnen Erstellung und Zerstörung des beibehaltenen Status beibehalten werden (nämlich der Konstruktor desViewModel
und desonCleared()
-Callbacks, den es 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
- Fragment ProGuard-Regeln behalten jetzt korrekt nur die verwendeten
Fragment
-Standardkonstruktorenklassen bei, die anstelle allerFragment
-Instanzen verwendet werden. Dadurch wird eine im Fragment1.2.1
eingeführte Regression behoben. (b/149665169 - Die in Fragment
1.2.2
hinzugefügtenrequire___()
-Lint-Regeln führen bei lokalen Variablen, die denselben Namen wie die verdeckten Kotlin-Attributnamen haben, nicht mehr falsch-positiv (d.h.view
. (b/149891163) FragmentContainerView
gibt bei Verwendung der Layoutvorschau in Android Studio keinenUnsupportedOperationException
mehr aus. (b/149707833)- Beibehaltene Fragmente, die nach dem Speichern des Status hinzugefügt wurden, wurden nicht kontinuierlich neu erstellt und nach jeder Konfigurationsänderung gelöscht. Dieses Problem wurde behoben. (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 nun beendet, bevoronSaveInstanceState()
aufgerufen wird. Dies spiegelt das Verhalten des Lebenszyklus des Fragments wider. Dies wurde zuvor in Fragment1.3.0-alpha04
veröffentlicht. (b/154645875) - Wenn
setMenuVisibility(false)
für ein Fragment aufgerufen wird, ändert sich die Sichtbarkeit der Menüs, die von seinen untergeordneten Fragmenten bereitgestellt werden, jetzt korrekt. Dies wurde zuvor in Fragment1.3.0-alpha04
veröffentlicht. (b/153593580)
Version 1.2.4
Version 1.2.4
1. April 2020
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
und androidx.fragment:fragment-testing:1.2.4
wurden veröffentlicht. Version 1.2.4 enthält diese Commits.
Fehlerkorrekturen
- Die Fragment ProGuard-Regeln wurden aktualisiert, um die Verschleierung beibehaltener Fragmente zu ermöglichen. (b/151605338)
- Die Lint-Regel
FragmentLiveDataObserve
fürDialogFragment
-Klassen wurde deaktiviert, da ihr Lebenszyklus und ihr Ansichtslebenszyklus immer synchron sind. Dadurch können beim Aufrufen vonobserve
sicher entwederthis
oderviewLifecycleOwner
verwendet werden. (b/151765086)
Version 1.2.3
Version 1.2.3
18. März 2020
androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
und androidx.fragment:fragment-testing:1.2.3
wurden veröffentlicht. Version 1.2.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in
DialogFragment
behoben, der eineStackOverflowError
verursachte, wenngetLayoutInflater()
ausonCreateDialog()
aufgerufen wurde. (b/117894767, aosp/1258665) - Der Umfang der in Fragment enthaltenen ProGuard-Regeln wurde reduziert, damit nicht verwendete Fragmentklassen entfernt werden können. (b/149665169)
- Falsch positive Ergebnisse in der
UseRequireInsteadOfGet
-Lint-Prüfung bei Verwendung eines lokalen Variablennamens, der den Kotlin-Attributnamen verdeckt, wurde behoben. (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
wurden veröffentlicht. Version 1.2.2 enthält diese Commits.
Neue Lint-Prüfungen
- Lint empfiehlt, die
viewLifecycleOwner
alsLifecycleOwner
zu verwenden, umOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
undonActivityCreated()
aufzurufen. (b/142117657) - Es wurde eine neue Lint-Prüfung hinzugefügt, die bestätigt, dass Sie beim Verwenden des Artefakts
fragment-testing
den richtigendebugImplementation
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 Fragment ProGuard-Dateien wurden behoben, 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 bei vielen 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
- Bei Fragmenten, die über die Methoden
add
undreplace
hinzugefügt werden, die eineClass
-Instanz (oder die Kotlin-reified-Version) verwenden, wird der Standardkonstruktor jetzt von ProGuard beibehalten. (b/148181315) FragmentStatePagerAdapter
undFragmentPagerAdapter
fangen beim Ausführen vonfinishUpdate()
keine vonFragmentManager
ausgelösten Ausnahmen mehr ab. (aosp/1208711)FragmentManager.findFragment()
funktionierte nicht mit Fragmenten, die über das Tag<fragment>
hinzugefügt wurden. (b/147784323)- Fragmente, die mit dem
<fragment>
-Tag aufgebläht wurden, erhalten jetzt immer einen Aufruf vononInflate()
voronCreate()
, wenn sie sich im Layout befinden. (aosp/1215856) - Durch das Aufrufen von
toString()
für eineFragmentManager
-Instanz wird keinNullPointerException
mehr ausgelöst, wenn die Aktivität bereits gelöscht wurde. (b/148189412)
Abhängigkeitsänderungen
- Die Fragment-
1.2.1
von Fragmenten sind jetzt abhängig vom gespeicherten Zustand der Lebenszyklusansicht der Ansicht (2.2.0
).
Version 1.2.0
Version 1.2.0
22. Januar 2020
androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
und androidx.fragment:fragment-testing:1.2.0
wurden veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
- FragmentContainerView:
FragmentContainerView
ist der dringend empfohlene Container für dynamisch hinzugefügte Fragmente. Er ersetzt die Verwendung vonFrameLayout
oder anderen Layouts. Außerdem werden dieselbenclass
-,android:name
- und optionalenandroid:tag
-Werte wie das<fragment>
-Tag unterstützt. Zum Hinzufügen dieses ersten Fragments wird jedoch eine normaleFragmentTransaction
verwendet, und nicht der von<fragment>
verwendete benutzerdefinierte Codepfad. onDestroyView()
-Timing: Fragmente warten jetzt auf Exit-Animationen, Exit-Framework-Übergänge und Beenden von AndroidX-Übergängen (bei Verwendung von Übergang1.3.0
), bevor sieonDestroyView()
aufrufen.- Klassenbasiertes
add()
undreplace()
: Es wurden neue Überlastungen vonadd()
undreplace()
fürFragmentTransaction
hinzugefügt, dieClass<? extends Fragment>
und optionaleBundle
von Argumenten annehmen. Diese Methoden verwenden IhreFragmentFactory
, um eine Instanz des hinzuzufügenden Fragments zu erstellen. Kotlin-Erweiterungen mit reifizierten Typen (z. B.fragmentTransaction.replace<YourFragment>(R.id.container)
) wurden ebenfallsfragment-ktx
hinzugefügt. - Lifecycle ViewModel SavedState-Integration:
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 durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die das Nicht-Null-FragmentManager
-Objekt zurückgibt, dem das Fragment hinzugefügt wird. MitisAdded()
können Sie feststellen, ob ein Aufruf sicher ist. - Einstellung von
FragmentManager.enableDebugLogging()
: Die statische MethodeFragmentManager.enableDebugLogging
wurde verworfen. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
, sodass Sie entweder dasDEBUG
- oderVERBOSE
-Logging aktivieren können, ohne Ihre App neu zu kompilieren.
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
auf einemFragmentContainerView
verwiesen wird, werden von ProGuard nicht automatisch aufbewahrt. In diesem Fall müssen Sie für jede Fragmentklasse manuell eine Keep-Regel hinzufügen. (b/142601969) - Wenn du ein
NavHostFragment
mitclass
oderandroid:name
in XML mitFragmentContainerView
hinzufügst, kannst dufindNavController()
nicht inonCreate()
deiner Aktivitäten verwenden. (b/142847973)
Version 1.2.0-rc05
8. Januar 2020
androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
und androidx.fragment:fragment-testing:1.2.0-rc05
wurden veröffentlicht. Version 1.2.0-rc05 enthält diese Commits.
Fehlerkorrekturen
- Eine Regression in Fragment
1.2.0-rc04
bei Verwendung des<fragment>
-Tags, die dazu führte, dassonViewCreated()
beim Löschen der Aktivität falsch aufgerufen wurde, wurde behoben. (b/146290333) - Bei Fragmenten, die mit dem
<fragment>
-Tag hinzugefügt wurden, werden jetzt auch ohne Konfiguration alle Fragmente gelöscht, auch wenn sie nur manchmal im Layout vorhanden sind (d.h. nur in Ihrem Layout im Querformat). Infolgedessen werden diese Fragmente jetzt korrekt zuCREATED
verschoben, auch wenn sie nicht in Ihrem Layout enthalten sind. Sie werden nicht instanziiert, durchlaufen jedoch keine Lebenszyklusmethoden. (b/145769287)
Version 1.2.0-rc04
18. Dezember 2019
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
und androidx.fragment:fragment-testing:1.2.0-rc04
wurden veröffentlicht. Version 1.2.0-rc04 enthält diese Commits.
Fehlerkorrekturen
- Die Animationen für
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
wurden angepasst, um visuelle Probleme zu vermeiden. (b/145468417)
Version 1.2.0-rc03
4. Dezember 2019
androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
und androidx.fragment:fragment-testing:1.2.0-rc03
wurden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- 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 gestoppt, wenn die enthaltende Aktivität
onSaveInstanceState()
aufruft. (b/144380645) - Es wurde ein Problem behoben, bei dem Ansichten fälschlicherweise als
INVISIBLE
markiert wurden, nachdem ein ausgeblendetes Fragment als Pop-up angezeigt wurde. (b/70793925) - Übergänge für gemeinsam genutzte Elemente in Fragmenten verarbeiten jetzt Ansichten, die gedreht, skaliert usw. wurden. (b/142835261)
Aktualisierungen der Dokumentation
- Die Dokumentation zur Einstellung von
setUserVisibleHint()
wurde klarer formuliert. (b/143897055) - Die Dokumentation zu
setFragmentFactory()
undgetFragmentFactory()
wurde verbessert. Jetzt wird deutlicher, dass sich das Festlegen einesFragmentFactory
auch auf untergeordnete FragmentManagers auswirkt. (aosp/1170095)
Abhängigkeitsänderungen
- Fragmente sind jetzt abhängig vom Lebenszyklus
2.2.0-rc03
, dem gespeicherten Zustand der Ansichtsmodell1.0.0-rc03
und der Aktivität1.1.0-rc03
.
Version 1.2.0-rc02
7. November 2019
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
und androidx.fragment:fragment-testing:1.2.0-rc02
wurden veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- In Kotlin verwendet 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
wurden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt jetzt zusätzlich zuandroid:name
dasclass
-Attribut, was der Funktionalität des<fragment>
-Tags entspricht. (b/142722242)- Es wurde eine neue Lint-Prüfung hinzugefügt, die sicherstellt, dass Sie
getViewLifecycleOwner()
verwenden, wennLiveData
vononCreateView()
,onViewCreated()
oderonActivityCreated()
beobachtet wird. (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 als Teil der Inflation hinzu, damitfindFragmentById()
undfindFragmentByTag()
sofort funktionieren. (b/142520327)- Ein
IllegalStateException
-Fehler inFragmentContainerView
aufgrund der Speicherung des Status behoben. (b/142580713) - Ein
UnsupportedOperationException
-Fehler inFragmentContainerView
bei verschleierterFragmentContainerView
-Klasse wurde behoben. (b/142657034)
Bekannte Probleme
- Fragmente, auf die nur über das Attribut
class
oderandroid:name
auf einemFragmentContainerView
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
wurden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
onInflate()
des Fragments nicht die richtigen Attribute vonFragmentContainerView
erhielt. Dadurch wurden Fälle wieNavHostFragment
nicht mehr unterstützt. (b/142421837)
Version 1.2.0-beta01
9. Oktober 2019
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
und androidx.fragment:fragment-testing:1.2.0-beta01
wurden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
FragmentContainerView
unterstützt das Hinzufügen eines anfänglichen Fragments mit zusätzlicher Unterstützung für die XML-Attributeandroid:name
und optionalandroid:tag
. Im Gegensatz zum<fragment>
-Tag verwendetFragmentContainerView
im Hintergrund einen normalenFragmentTransaction
, um das anfängliche Fragment hinzuzufügen. Dadurch sind weitereFragmentTransaction
-Vorgänge für dieFragmentContainerView
möglich und die Ansichtsbindung kann für das Layout verwendet werden. (b/139830628, b/141177981)- Fragmente enthalten jetzt eine Lint-Warnung, die eine schnelle Korrektur bietet, um
<fragment>
durchFragmentContainerView
zu ersetzen. (b/139830056)
Fehlerkorrekturen
- Problem mit
ClassCastException
bei Verwendung vonandroidx.transition
behoben. (b/140680619) - Bei Verwendung von Übergang
1.3.0-beta01
warten Fragmente jetzt, bis die ÜbergängeonDestroyView()
abgesendet wurden, 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
behoben wurden). (aosp/1119841) - Bei Verwendung von Übergang
1.3.0-beta01
brechen Fragmente jetztandroidx.transition
-Übergänge ordnungsgemäß ab, bevor neue Übergänge / Animationen im selben Container gestartet werden. (aosp/1119841) - Es wurde ein Problem in API 17 und niedriger behoben, wenn
androidx.transition
-Übergänge in der Stammansicht des Fragments inFragmentContainerView
verwendet wurden. (b/140361893) - Das
fragment-testing
-Artefakt hängt jetzt von AndroidX Test1.2.0
ab und behebt eine Inkompatibilität mit der aktuellen Version von Espresso 3.2.0. (b/139100149) - Die Verwendung von
Log.w
in FragmentManager wurde entfernt. (aosp/1126468)
Bekannte Probleme
onInflate()
des Fragments erhalten nicht die richtigen Attribute vonFragmentContainerView
, wodurch Fälle wieNavHostFragment
nicht mehr funktionieren. (b/142421837)
Version 1.2.0-alpha04
18. September 2019
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
und androidx.fragment:fragment-testing:1.2.0-alpha04
wurden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
getFragmentManager()
undrequireFragmentManager()
fürFragment
wurden verworfen und durch eine einzelnegetParentFragmentManager()
-Methode ersetzt, die dasFragmentManager
-Objekt zurückgibt, dem das Fragment hinzugefügt wird, dem das Fragment hinzugefügt wird. MitisAdded()
können Sie feststellen, ob ein Aufruf sicher ist. (b/140574496) - Die statische Methode
FragmentManager.enableDebugLogging
wurde eingestellt. FragmentManager berücksichtigt jetztLog.isLoggable()
für das TagFragmentManager
, sodass Sie entweder dasDEBUG
- oderVERBOSE
-Logging aktivieren können, ohne Ihre App neu zu kompilieren. (aosp/1116591)
Fehlerkorrekturen
- Fragmente werden jetzt ordnungsgemäß zerstört, während Exit-Animationen auf anderen Fragmenten 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
ist jetztfinal
. (b/140133091)
Fehlerkorrekturen
FragmentContainerView
kehrt jetzt die Zeichenreihenfolge korrekt um, wenn Fragmente aus dem Back Stack 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)
- Fragmente warten jetzt (zusätzlich zu Animationen, die in Fragment
1.2.0-alpha02
behoben wurden) auf den Abschluss von Übergängen, bevoronDestroyView()
abgefertigt wird. (b/138741697)
Version 1.2.0-alpha02
7. August 2019
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
und androidx.fragment:fragment-testing:11.2.0-alpha02
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
SavedStateViewModelFactory
ist jetzt die Standard-Factory, die verwendet wird, wennby viewModels()
,by activityViewModels()
, derViewModelProvider
-Konstruktor oderViewModelProviders.of()
mit einemFragment
verwendet wird. (b/135716331)- Die Standardanimationen bei der Verwendung von
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
undTRANSIT_FRAGMENT_FADE
mitsetTransition
auf einemFragmentTransaction
wurden aktualisiert 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, wodurch die Verwendung vonFrameLayout
usw. ersetzt wird, da dadurch Probleme bei der Z-Reihenfolge von Animationen und die Weiterleitung von Fenstereinfügungen an Fragmente behoben werden. (b/37036000, aosp/985243, b/136494650)- Eine statische
FragmentManager.findFragment(View)
-Methode wurde hinzugefügt, um das enthaltende Fragment aus einer durch ein Fragment aufgeblähten Ansicht abzurufen. 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. Diese Methoden verwenden IhreFragmentFactory
, um eine Instanz des hinzuzufügenden Fragments zu erstellen. 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 den Navigationspfad-Titel unter
FragmentTransaction
undFragmentManager.BackStackEntry
wurden eingestellt. (b/138252944) - Die Methode
setTransitionStyle
fürFragmentTransaction
wurde eingestellt. (aosp/1011537). - Viele der Methoden in
FragmentManager
sind nicht mehrabstract
.FragmentManager
selbst bleibtabstract
und sollte nicht direkt instanziiert oder erweitert werden. sollten Sie 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) - Von Fragment
1.1.0-rc03
: Ein Problem wurde behoben, bei dem durch mehrfaches Aufrufen vonpostponeEnterTransition()
mit einem Zeitlimit das vorherige Zeitlimit nicht abgebrochen wurde. (b/137797118) - Aus Fragment
1.1.0-rc02
: Ein Absturz inFragmentPagerAdapter
undFragmentStatePagerAdapter
beim Entfernen des aktuellen Elements wurde behoben. (b/137209870) - Fragmente warten jetzt, bis die Animationen beendet sind, bevor
onDestroyView()
gesendet wird. (b/136110528) - Fragmentanimationen von untergeordneten Fragmenten und deren Nachfolgerelemente werden jetzt ordnungsgemäß 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
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- FragmentManager ruft jetzt
requestApplyInsets()
auf, nachdem die Ansicht des Fragments angehängt wurde, und direkt vor dem Aufrufen vononViewCreated()
. Dadurch wird sichergestellt, dass Ihre Ansicht immer die richtigen Einfügungen 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
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Wichtige Änderungen seit Version 1.0.0
- fragment-testing: Das Artefakt
fragment-testing
bietet eineFragmentScenario
-Klasse zum isolierten Testen eines Fragments. Weitere Informationen finden Sie unter Dokumentation zu Fragmenten Ihrer App testen. - FragmentFactory: Sie können jetzt eine
FragmentFactory
auf einerFragmentManager
festlegen, um die Erstellung von Fragmentinstanzen zu verwalten. Damit entfällt die strenge Anforderung eines No-Argument-Konstruktors. - Kotlin-Attributdelegierte für ViewModels: Das Artefakt
fragment-ktx
enthält jetzt zwei Kotlin-Eigenschaftsdelegierte:by viewModels()
für den Zugriff auf ViewModels, die mit dem jeweiligen Fragment verknüpft sind, undby activityViewModels()
für den Zugriff auf ViewModels, die der Aktivität zugeordnet sind. - Max. Lebenszyklus: Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()
für eineFragmentTransaction
aufrufen. Dies ersetzt das mittlerweile verworfenesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. - FragmentActivity LayoutId-Konstruktor: Abgeleitete Klassen von
FragmentActivity
können jetzt optional einen Konstruktor fürFragmentActivity
aufrufen, der eineR.layout
-ID annimmt, um das Layout anzugeben, das als Inhaltsansicht als Alternative zum Aufrufen vonsetContentView()
inonCreate()
festgelegt werden soll. Dies ändert nichts an der Anforderung, dass Ihre Unterklasse einen No-Argument-Konstruktor haben muss. - Fragment LayoutId-Konstruktor: Abgeleitete Klassen von
Fragment
können jetzt optional einen Konstruktor fürFragment
aufrufen, der eineR.layout
-ID verwendet. Diese gibt das Layout an, das für dieses Fragment als Alternative zum Überschreiben vononCreateView()
verwendet werden soll. Das aufgeblähte Layout kann inonViewCreated()
konfiguriert werden. - Mit Zeitlimit verschieben: Eine neue Überlastung von
postponeEnterTransition()
wurde hinzugefügt, die ein Zeitlimit erfordert.
Version 1.1.0-rc04
7. August 2019
androidx.fragment:fragment:1.1.0-rc04
, androidx.fragment:fragment-ktx:1.1.0-rc04
und androidx.fragment:fragment-testing:1.1.0-rc04
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Verschobene Übergänge in Fragmenten werden jetzt korrekt per Pop-up abgebrochen. (b/138251858)
Version 1.1.0-rc03
19. Juli 2019
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
und androidx.fragment:fragment-testing:1.1.0-rc03
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Durch mehrmaliges Aufrufen von
postponeEnterTransition()
mit einem Zeitlimit wurden frühere Zeitüberschreitungen nicht abgebrochen. Dieses Problem wurde behoben. (b/137797118)
Version 1.1.0-rc02
17. Juli 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
und androidx.fragment-testing:fragment:1.1.0-rc02
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Absturz in
FragmentPagerAdapter
undFragmentStatePagerAdapter
beim Entfernen des aktuellen Elements wurde behoben. (b/137209870)
Version 1.1.0-rc01
2. Juli 2019
androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
und androidx.fragment:fragment-testing:1.1.0-rc01
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die Sichtbarkeit von Fragmenten wird jetzt korrekt aktualisiert, wenn 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
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
androidx.lifecycle.Lifecycle
-Callbacks (speziell aufSTARTED
,RESUMED
,PAUSED
,STOPPED
undDESTROYED
) für verschachtelte Fragmente sind jetzt korrekt verschachtelt. (b/133497591)OnBackPressedCallback
-Instanzen, die in deronCreate()
eines Fragments registriert sind, haben jetzt ordnungsgemäß Vorrang vor dem untergeordneten FragmentManager. (b/133175997)- Untergeordnete Fragmente werden nicht mehr animiert, wenn ihr übergeordnetes Fragment ersetzt wird. (b/121017790)
- Animationen und Übergänge von Fragmenten werden jetzt bei der Verwendung von
animateLayoutChanges="true"
ignoriert. Dadurch wurde ein Problem behoben, bei dem Fragmente nicht ordnungsgemäß gelöscht wurden. (b/116257087)
Version 1.1.0-alpha09
16. Mai 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
und androidx.fragment:fragment-testing:1.1.0-alpha09
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
API-Änderungen
- Fragmente erhalten jetzt einen Callback an eine neue
onPrimaryNavigationFragmentChanged(boolean)
-Methode, wenn sich das primäre Navigationsfragment ändert. aosp/960857
Fehlerkorrekturen
- Menüelemente, die durch ein untergeordnetes Fragment aufgebläht wurden, werden jetzt korrekt entfernt, wenn das übergeordnete Fragment entfernt wird. b/131581013
Version 1.1.0-alpha08
7. Mai 2019
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
und androidx.fragment:fragment-testing:1.1.0-alpha08
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diese Version ist mit den Einstellungen 1.1.0-alpha01 bis 1.1.0-alpha04 nicht 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
mit einemBundle
wurde entfernt. aosp/953856 - Funktionsgefährdende Änderung: Die Konstanten
RESUME_ONLY_CURRENT_FRAGMENT
undUSE_SET_USER_VISIBLE_HINT
inFragmentPagerAdapter
undFragmentStatePagerAdapter
wurden inBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
bzw.BEHAVIOR_SET_USER_VISIBLE_HINT
umbenannt. aosp/954782
Fehlerkorrekturen
- Fragmente, deren Lebenszyklus über
setMaxLifecycle()
begrenzt wurde, werden nicht mehr fortgesetzt, bevor sie ihren endgültigen Zustand erreichen. b/131557151 - Bei Verwendung von
setMaxLifecycle(Lifecycle.State.CREATED)
wird die Ansicht von Fragmenten ordnungsgemäß zerstört. aosp/954180
Version 1.1.0-alpha07
25. April 2019
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
und androidx.fragment:fragment-testing:1.1.0-alpha07
wurden veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Sie können jetzt einen maximalen Lebenszyklusstatus für ein Fragment festlegen, indem Sie
setMaxLifecycle()
für einFragmentTransaction
aufrufen. Dies ersetzt das mittlerweile verworfenesetUserVisibleHint()
.FragmentPagerAdapter
undFragmentStatePagerAdapter
haben einen neuen Konstruktor, mit dem Sie zum neuen Verhalten wechseln können. (b/129780800)
API-Änderungen
moveToState(STARTED)
unterFragmentScenario
kann jetzt nur auf Geräten mit API 24 oder höher aufgerufen werden. (b/129880016)
Änderungen im Verhalten
- Aufgrund von (b/129907905) erhalten Fragmente auf dem Back-Stack keinen Callback von
onCreateView()
, wenn die Hosting-Aktivität neu erstellt wird.onCreateView()
wird jetzt nur dann aufgerufen, wenn das Fragment sichtbar wird (d.h. der Back Stack wird geplatzt).
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem ein
<fragment>
-Tag in XML und dercontentLayoutId
-Konstruktor vonFragmentActivity
oderAppCompatActivity
verwendet wurde. (b/129907905) - Ein Problem wurde behoben, bei dem Fragmente im Back Stack nach einer Konfigurationsänderung nicht mindestens zu
CREATED
verschoben wurden, wodurch ViewModels und untergeordnete beibehaltene Fragmente nicht korrekt entsorgt wurden. (b/129593351) - Ein Absturz in
restoreSaveState
wurde behoben, der durch eine Desynchronisierung der beibehaltenen Fragmente nach dem Speichern des Instanzstatus verursacht wurde. (b/130433793) (aosp/947824) - Es wurden Probleme behoben, bei denen ein
OnBackPressedCallback
, das mit einem Fragmentlebenszyklus hinzugefügt wurde, nicht aufgerufen wurde, wenn dasFragmentManager
einen Back Stack hätte. Weitere Informationen finden Sie unter androidx.activity 1.0.0-alpha07. (aosp/948209) LAYER_TYPE_HARDWARE
wird für Animationen nicht mehr von Fragmenten 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 ausgelöste Ausnahmen enthalten jetzt den Namen des Fragments in der Nachricht. (b/67759402)
API-Änderungen
Fragment
undFragmentActivity
enthalten jetzt einen zweiten Konstruktor, der einen@LayoutRes int
verwendet, der das vorherige Verhalten beim Annotieren der Klasse mit@ContentView
ersetzt. Dieser Ansatz funktioniert sowohl in Anwendungs- als auch in Bibliotheksmodulen. (b/128352521)onActivityResult()
von FragmentActivity ist jetzt korrekt als@CallSuper
gekennzeichnet. (b/127971684)- Die Methode
instantiate
der FragmentFactory, die ein Argument Bundle verwendet, wurde eingestellt. Apps sollten die neueinstantiate
-Überlastung verwenden, die kein Bundle verwendet. (b/128836103) FragmentScenario
-Methoden sind jetzt korrekt mit@StyleRes
annotiert. (aosp/924193)FragmentTabHost
wurde verworfen. (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 blinkte. (b/129405432)
- Es wurde ein Problem behoben, bei dem das primäre Navigationsfragment nach einer Reihe von Operationen „popBackStack+Ersetzen+popBackStack“ verloren ging. (b/124332597)
- Es wurde ein Problem behoben, bei dem beim Wiederherstellen des Fragmentstatus
@ContentView
-Konstruktoren für Ihre Aktivität verwendet wurden. (b/127313094) - Die Logik von
setTargetFragment()
beim Ersetzen eines vorhandenen Zielfragments durch ein Fragment, das noch nicht an FragmentManager angehängt wurde, wurde korrigiert. (aosp/932156)
Version 1.1.0-alpha05
13. März 2019
androidx.fragment:fragment:1.1.0-alpha05
, androidx.fragment:fragment-ktx:1.1.0-alpha05
und androidx.fragment:fragment-testing:1.1.0-alpha05
wurden veröffentlicht. Die vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
@ContentView
-Annotationssuchen werden jetzt im Cache gespeichert (b/123709449)
Verhaltensänderungen
- Durch das Aufrufen von
remove()
,hide()
,show()
,detach()
undsetPrimaryNavigationFragment()
mit einem Fragment, das an einen anderen FragmentManager angehängt ist, wird jetzt einIllegalStateException
ausgelöst, anstatt automatisch einen Fehler auszulösen (aosp/904301).
Fehlerkorrekturen
onNewIntent
fürFragmentActivity
ist jetzt korrekt mit@CallSuper
gekennzeichnet (b/124120586)- Das Problem, dass
onDismiss()
vonDialogFragment
bei Verwendung vongetDialog().dismiss()
odergetDialog().cancel()
zweimal aufgerufen werden konnte, wurde behoben (b/126563750).
Version 1.1.0-alpha04
7. Februar 2019
androidx.fragment:fragment 1.1.0-alpha04
, androidx.fragment:fragment-ktx 1.1.0-alpha04
und androidx.fragment:fragment-testing 1.1.0-alpha04
wurden veröffentlicht.
Neue Funktionen
- Die
@ContentView
-Klassenanmerkung wird jetzt unterstützt, mit der Sie angeben können, welche Layout-XML-Datei als Alternative zum Überschreiben vononCreateView()
aufgeblasen werden soll. Es empfiehlt 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 im Fragment gehostete Optionsmenüs zu testen (b/121126668).
API-Änderungen
- Es wurde eine
requireArguments()
-Methode hinzugefügt, die ein@NonNull Bundle
zurückgibt oder einIllegalStateException
auslöst (b/121196360). - Es wurde ein Hinweis hinzugefügt, dass
getLifecycle()
,getViewLifecycleOwner()
undgetViewLifecycleOwnerLiveData()
nicht überschrieben werden sollten und in einer zukünftigen Version endgültig festgelegt werden. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (aosp/880714) - Es wurde ein Hinweis hinzugefügt, dass
getViewModelStore()
nicht überschrieben werden sollte und in einem zukünftigen Release endgültig gemacht wird. Reichen Sie eine Funktionsanfrage ein, wenn Sie diese Methode momentan überschreiben. (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, bei dem Zielfragmente in oder nach
onDestroy()
manchmal nicht verfügbar waren. (b/122312935) - „onDismiss()“ von DialogFragment wird jetzt vor
onDestroy()
aufgerufen. (aosp/874133) (aosp/890734)
Version 1.1.0-alpha03
17. Dezember 2018
Neue Funktionen
- Das Fragment implementiert jetzt
BundleSavedStateRegistryOwner
und hängt von der neu veröffentlichten SavedState-Bibliothek [aosp/824380] ab - Ein
by activityViewModels
-Kotlin-Property-Delegate wurde hinzugefügt, um ViewModels abzurufen, die mit der zugehörigen Aktivität verknüpft sind [b/119050253]. - Der Kotlin-Eigenschaftsdelegat
by viewModels
wurde erweitert, um eine optionale Lambda-Methode zum Abrufen vonViewModelStoreOwner
zu verwenden, mit der Sie das übergeordnete Fragment oder ein anderes benutzerdefiniertesViewModelStoreOwner
mit Code wieval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253] übergeben können.
API-Änderungen
- Mit
FragmentScenario
können Sie jetzt ein Design wieTheme.AppCompat
[b/119054431] angeben. Dies ist eine funktionsgefährdende Änderung. - Es wurde eine
requireView()
-Methode hinzugefügt, die ein@NonNull View
zurückgibt oder einIllegalStateException
auslöst [b/120241368]. - Es wurde eine
requireParentFragment()
-Methode hinzugefügt, die ein@NonNull Fragment
zurückgibt oder einIllegalStateException
auslöst [b/112103783].
Fehlerkorrekturen
- Korrigierte IllegalStateException: Fehler beim Speichern des Status b/120814739
- Fragmente, die aus dem Status der gespeicherten Instanz wiederhergestellt werden, erhalten jetzt immer ein
Bundle
ungleich null [b/119794496] - Entfernte Fragmente verwenden das
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
- IllegalStateException bei der Verwendung verschachtelter Fragmente im Back Stack behoben (b/119256498)
- Das Absturzproblem bei der Verwendung von
FragmentScenario.recreate()
mit einemFragmentFactory
(aosp/820540) wurde behoben. - Zielfragmente waren nicht zugänglich, nachdem das Fragment entfernt wurde (aosp/807634). Dieses Problem wurde behoben.
Version 1.1.0-alpha01
5. November 2018
Dies ist die erste Version des
Artefakt fragment-testing
und FragmentScenario
, das auf dem
androidx.test:core-APIs zu erstellen. Weitere Informationen finden Sie in der Dokumentation zum Fragmenttest.
Neue Funktionen
- Neue FragmentSzenario-Klasse zum isolierten Testen von Fragmenten.
- Du kannst jetzt auf jedem
FragmentManager
-Gerät eineFragmentFactory
festlegen, um zu steuern, wie neue Fragmentinstanzen instanziiert werden. - Neuer Kotlin-Attributdelegierung für
by viewModels()
zum Abrufen hinzugefügt ViewModels aus einem Fragment - Ausstehende Eingabeereignisse (z. B. Klicks) werden jetzt im Fragment-Bereich
onStop()
API-Änderungen
- Erhebliche Erweiterung der Annotationen zur Null-Zulässigkeit in der Fragment API Oberfläche.
Fehlerkorrekturen
- Problem behoben, bei dem Fragment-Vorgänge in LiveData fehlschlugen (b/77944637)
Bekannte Probleme
- Der Zugriff auf Zielfragmente ist nicht mehr möglich, nachdem ein Fragment aus dem FragmentManager.
fragment-testing
ist abhängig vonandroidx.test:core:1.0.0-beta01
statt von richtig:androidx.test:core:1.0.0
.