Fragment
| Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
|---|---|---|---|---|
| 13 août 2025 | 1.8.9 | - | - | - |
Déclarer des dépendances
Pour ajouter une dépendance à Fragment, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 1.8
Version 1.8.9
13 août 2025
Publication d'androidx.fragment:fragment-*:1.8.9. La version 1.8.9 contient ces commits.
Correction de bugs
- Correction d'un problème qui empêchait l'animation du geste suivant de s'afficher correctement lors de l'utilisation d'animateurs, lorsqu'un geste de retour prédictif annulant une opération de masquage était effectué. (I0a400, b/384765586)
- Correction d'une erreur qui empêchait une combinaison de
setMaxLifecycleetpopBackStackde déplacer le fragment supérieur vers RESUMED. (I3448b, b/406127576)
Version 1.8.8
4 juin 2025
Publication d'androidx.fragment:fragment-*:1.8.8. La version 1.8.8 contient ces commits.
Correction de bugs
- Correction d'un problème de plantage de
FragmentManagerlors de l'enregistrement de l'état des fragments ajoutés avecsetMaxLifecycle(Lifecycle.State.INITIALIZED). Ces fragments, puisqu'ils n'ont jamais été soumis àonCreate(), n'ont plus d'état enregistré ni deonSaveInstanceState()appelé. (I6e37a)
Version 1.8.7
20 mai 2025
Publication d'androidx.fragment:fragment-*:1.8.7. La version 1.8.7 contient ces commits.
Correction de bugs
- Correction d'un problème lié à l'état incorrect de
FragmentManageraprès des opérations pop et replace dans le même frame, ce qui pouvait entraîner un plantage lors de la suppression de la pile de retour viapopBackStackou le geste de retour prédictif. (I50ad1) - Correction d'un plantage causé par l'utilisation de Transitions AndroidX et par le fait de se retrouver dans un cas où des transactions de fragment consécutives rapides tentent d'annuler une transition non démarrée et où la bibliothèque Transitions AndroidX n'efface pas correctement l'état de la transition. (voir b/414612221). (Ib5235)
Version 1.8.6
12 février 2025
Publication d'androidx.fragment:fragment-*:1.8.6. La version 1.8.6 contient ces commits.
Correction de bugs
- La substitution
setOnApplyWindowInsetsListenerdeFragmentContainerViewaccepte désormais un écouteur null, ce qui correspond à ce que permet le framework. (I575f0, b/282790626)
Version 1.8.5
30 octobre 2024
Publication d'androidx.fragment:fragment-*:1.8.5. La version 1.8.5 contient ces commits.
Correction de bugs
- Correction d'un
IllegalStateExceptiondéclenché parsaveBackStackuniquement après l'annulation ou l'interruption d'un geste de prévisualisation du Retour. (I3387d, b/342419080)
Version 1.8.4
2 octobre 2024
Publication d'androidx.fragment:fragment-*:1.8.4. La version 1.8.4 contient ces commits.
Correction de bugs
- Correction d'un problème qui entraînait le plantage des fragments lors de l'utilisation des transitions AndroidX lorsque l'utilisateur appuyait rapidement sur le bouton Retour du système ou effectuait rapidement le geste Retour. (Ibc038, b/364804225)
- Correction d'un problème dans les fragments où l'interruption d'un geste de retour prédictif envoyait le gestionnaire de fragments dans un état indéfini et affichait même le mauvais fragment. (If82e2, b/338624457)
- Correction d'une
UninitializedPropertyAccessExceptiondansAndroidFragmentlors du remplacement dynamique de la classe utilisée par votre instanceAndroidFragment. (I12dea)
Version 1.8.3
4 septembre 2024
Publication d'androidx.fragment:fragment-*:1.8.3. La version 1.8.3 contient ces commits.
Correction de bugs
FragmentManagerprend désormais correctement en compte les opérations en attente lors de la gestion du geste de prévisualisation du Retour. Cela devrait garantir que l'exécution d'un retour système ne provoque plus d'IndexOutOfBoundsException. (I9ba32, b/342316801)AndroidFragmentne plante plus s'il est ajouté à la composition alors que l'état de l'activité/du fragment contenant est déjà enregistré. (I985e9, b/356643968)
Version 1.8.2
24 juillet 2024
Publication d'androidx.fragment:fragment-*:1.8.2. La version 1.8.2 contient ces commits.
Correction de bugs
AndroidFragmentgère désormais correctement les cas où le fragment parent est placé dans la pile "Retour" des fragments, ce qui évite les problèmes de type "No view found for id" (Aucune vue trouvée pour l'ID) lorsque vous revenez à ce fragment. (I94608)- Les fragments ajoutés via la méthode
FragmentTransaction.addqui utilise unViewGroupattendent désormaisonContainerAvailableavant de passer àonStart(). Cela affecte les utilisateurs de cette API, commeAndroidFragment, qui attend désormais queAndroidFragmentréintègre la composition avant de le déplacer dansonStart(). (I94608)
Version 1.8.1
26 juin 2024
Publication d'androidx.fragment:fragment-*:1.8.1. La version 1.8.1 contient ces commits.
Correction de bugs
- Correction d'un problème pour lequel les fragments sans conteneur étaient immédiatement
DESTROYEDlors du démarrage d'un geste Retour prédictif. Ils sont désormais maintenus dans l'étatCREATEDjusqu'à la fin du geste. (If6b83, b/345244539)
Version 1.8.0
12 juin 2024
Publication d'androidx.fragment:fragment-*:1.8.0. La version 1.8.0 contient ces commits.
Changements importants depuis la version 1.7.0
- L'artefact
fragment-composecontient désormais unComposableAndroidFragmentqui permet d'ajouter des fragments à la hiérarchie Compose via le nom de classe du fragment. Il gère automatiquement l'enregistrement et la restauration de l'état du fragment. Cette méthode doit être utilisée en remplacement direct de l'approche précédemment recommandée, qui consistait à utiliserAndroidViewBindingpour gonfler un fragment. - Le rappel
onBackStackChangeCancelledsur l'interfaceOnBackStackChangedListenerdeFragmentManagerse déclenche désormais lors de l'exécution des opérations dansFragmentManager, ce qui le rapproche du timing du rappelonBackStackChangeCommitted.
Version 1.8.0-rc01
29 mai 2024
Publication d'androidx.fragment:fragment-*:1.8.0-rc01. La version 1.8.0-rc01 contient ces commits.
Correction de bugs
- Le rappel
onBackStackChangeCancelledsur l'interfaceFragmentManagers OnBackStackChangedListenerse déclenche désormais lors de l'exécution d'opérations dansFragmentManager, ce qui le rapproche du timing du rappelonBackStackChangeCommitted. (I5ebfb, b/332916112)
Version 1.8.0-beta01
14 mai 2024
Publication d'androidx.fragment:fragment-*:1.8.0-beta01. La version 1.8.0-beta01 contient ces commits.
Correction de bugs
- Depuis Fragment
1.7.1: la prévisualisation du Retour ne s'exécute désormais que pour les transactions dans lesquelles tous les fragments ont un Animator ou une transition AndroidX pouvant être recherchée. Correction d'un problème qui entraînait l'affichage d'un écran noir lors de l'annulation d'une transaction partiellement consultable. (I43037, b/339169168)
Version 1.8.0-alpha02
17 avril 2024
Publication d'androidx.fragment:fragment-*:1.8.0-alpha02. La version 1.8.0-alpha02 contient ces commits.
Correction de bugs
- Depuis Fragment
1.7.0-rc02: ajout de journaux pour indiquer pourquoi la définition d'unsharedElementsans autre transition ne s'exécutera pas. (Iec48e) - Depuis Fragment
1.7.0-rc02: correction d'un bug qui entraînait un plantage lorsqu'un élément partagé non séquentiel était ajouté à des transactions où toutes les autres transitions étaient séquentielles. La transaction sera désormais correctement considérée comme non consultable. (I18ccd)
Version 1.8.0-alpha01
3 avril 2024
Publication d'androidx.fragment:fragment-*:1.8.0-alpha01. La version 1.8.0-alpha01 contient ces commits.
Nouvelles fonctionnalités
- Le nouveau
AndroidFragmentComposablepermet d'ajouter des fragments dans la hiérarchie Compose via le nom de classe du fragment. Il gère automatiquement l'enregistrement et la restauration de l'état du fragment. Il peut être utilisé en remplacement direct deComposableAndroidViewBinding.(b/312895363, Icf841)
Modifications de la documentation
- Mise à jour de la documentation pour les API
OnBackStackChangedListenerafin d'indiquer quand elles sont appelées et comment elles doivent être utilisées. (I0bfd9)
Mise à jour de la dépendance
- Fragment dépend désormais de Profile Installer 1.3.1.
Version 1.7
Version 1.7.1
14 mai 2024
Publication d'androidx.fragment:fragment-*:1.7.1. La version 1.7.1 contient ces commits.
Correction de bugs
- La prévisualisation du Retour ne s'exécutera désormais que pour les transactions dans lesquelles tous les fragments ont un Animator ou une transition Androidx pouvant être recherchée. Correction d'un problème qui entraînait l'affichage d'un écran vide lors de l'annulation d'une transaction partiellement consultable. (I43037, b/339169168)
Version 1.7.0
1er mai 2024
Publication d'androidx.fragment:fragment-*:1.7.0. La version 1.7.0 contient ces commits.
Prise en charge de la prévisualisation du geste Retour
- Les fragments sont désormais compatibles avec la prévisualisation du Retour dans l'application lorsque vous utilisez
Animatorou AndroidX Transition 1.5.0. Cela permet aux utilisateurs d'utiliser le geste Retour pour voir le fragment précédent en recherchant votre Animator/Transition avant de décider de valider la transaction en terminant le geste ou de l'annuler.
| Système de transition | Ressource XML | Prise en charge de la prévisualisation du Retour |
|---|---|---|
Animation |
R.anim |
Non |
Animator |
R.animator |
Oui |
Framework Transition |
R.transition |
Non |
AndroidX Transition avec Transition 1.4.1 ou version antérieure |
R.transition |
Non |
AndroidX Transition avec Transition 1.5.0 |
R.transition |
Oui |
Si vous rencontrez des problèmes avec la prévisualisation du Retour dans les Fragments après avoir activé le geste Retour prédictif, veuillez signaler un problème concernant Fragment en fournissant un exemple de projet qui reproduit votre problème. Vous pouvez désactiver la prévisualisation du retour en arrière en utilisant FragmentManager.enabledPredictiveBack(false) dans le onCreate() de votre activité.
FragmentManager.OnBackStackChangedListener() fournit désormais onBackStackChangeProgressed() et onBackStackChangeCancelled() pour recevoir respectivement la progression de la prévisualisation du Retour et les événements annulés.
Artefact Fragment Compose
Un nouvel artefact fragment-compose a été créé pour aider les applications qui sont en train de passer d'une architecture basée sur des fragments à une architecture entièrement basée sur Compose.
La première fonctionnalité disponible dans ce nouvel artefact est une méthode d'extension content sur Fragment qui vise à faciliter l'utilisation de Compose pour l'UI d'un Fragment individuel en créant un ComposeView pour vous et en définissant le ViewCompositionStrategy approprié.
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 avril 2024
Publication d'androidx.fragment:fragment-*:1.7.0-rc02. La version 1.7.0-rc02 contient ces commits.
Correction de bugs
- Ajout de journaux pour indiquer pourquoi la définition d'un
sharedElementsans aucune autre transition ne s'exécutera pas. (Iec48e) - Correction d'un bug qui entraînait un plantage lorsqu'un élément partagé non séquentiel était ajouté à une transaction dont toutes les autres transitions étaient séquentielles. La transaction sera désormais correctement considérée comme non consultable. (I18ccd)
Version 1.7.0-rc01
3 avril 2024
Publication d'androidx.fragment:fragment-*:1.7.0-rc01. La version 1.7.0-rc01 contient ces commits.
Mise à jour de la dépendance
- Fragment dépend désormais de Profile Installer 1.3.1.
Version 1.7.0-beta01
20 mars 2024
Publication d'androidx.fragment:fragment-*:1.7.0-beta01. La version 1.7.0-beta01 contient ces commits.
Modifications apportées à l'API
FragmentHostCallbackest désormais écrit en Kotlin afin que la possibilité de valeur nulle du type générique de l'hôte corresponde à la possibilité de valeur nulle du type de retour deonGetHost(). (I40af5)
Correction de bugs
- Correction d'un problème pour lequel, lors de la validation d'un geste de prévisualisation du Retour sur un fragment qui ne se trouve pas dans un conteneur, ce fragment n'était jamais détruit. Le fragment est alors immédiatement déplacé vers l'état final. (Ida0d9)
- Correction d'un problème dans les fragments où l'interruption des transitions entrantes avec un geste de Retour prédictif détruisait la vue entrante et laissait un écran vide. (Id3f22, b/319531491)
Version 1.7.0-alpha10
7 février 2024
Publication d'androidx.fragment:fragment-*:1.7.0-alpha10. Liste des commits de la version 1.7.0-alpha10
Correction de bugs
- Correction du problème connu dans la version précédente de Fragment, où l'utilisation de la prise en charge de la prévisualisation du Retour de Fragment pour
Animatorou AndroidX Transition entraînait l'affichage d'uneNullPointerExceptionà partir dehandleOnBackProgressedsi aucunFragmentManager.OnBackStackChangedListenern'avait jamais été ajouté viaaddOnBackStackChangedListener. (I7c835)
Version 1.7.0-alpha09
24 janvier 2024
Publication d'androidx.fragment:fragment-*:1.7.0-alpha09. Liste des commits de la version 1.7.0-alpha09
Artefact Fragment Compose
Un nouvel artefact fragment-compose a été créé pour aider les applications qui sont en train de passer d'une architecture basée sur des fragments à une architecture entièrement basée sur Compose.
La première fonctionnalité disponible dans ce nouvel artefact est une méthode d'extension content sur Fragment qui vise à faciliter l'utilisation de Compose pour l'UI d'un Fragment individuel en créant un ComposeView pour vous et en définissant le ViewCompositionStrategy approprié. (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)
}
}
Nouvelles fonctionnalités
FragmentManager.OnBackStackChangedListener()fournit désormaisonBackStackChangeProgressed()etonBackStackChangeCancelled()pour recevoir respectivement la progression de la prévisualisation du Retour et les événements annulés. (214b87)
Problème connu
- Lorsque vous utilisez la prise en charge de la prévisualisation du Retour pour
Animatorou AndroidX Transition, les fragments génèrent uneNullPointerExceptionà partir dehandleOnBackProgressedsi aucunFragmentManager.OnBackStackChangedListenern'a jamais été ajouté viaaddOnBackStackChangedListener. L'ajout manuel d'un écouteur permet de contourner le plantage. Un correctif sera disponible dans la prochaine version de Fragments.
Version 1.7.0-alpha08
10 janvier 2024
Publication d'androidx.fragment:fragment-*:1.7.0-alpha08. Liste des commits de la version 1.7.0-alpha08
Nettoyage
- Suppression de la solution de contournement pour la bibliothèque de transition, qui a été corrigée dans Transition
1.5.0-alpha06. (I04356)
Version 1.7.0-alpha07
29 novembre 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha07. Liste des commits de la version 1.7.0-alpha07
Correction de bugs
- Correction d'une
NullPointerExceptioncausée par la définition d'une transition d'élément partagé sans définir de transition d'entrée/sortie. (I8472b) - Depuis Fragment
1.6.2: lorsque le Fragment d'unFragmentContainerViewest gonflé, ses états tels queFragmentManager, Host et l'ID sont désormais accessibles dans le rappelonInflate. (I1e44c, b/307427423) - Depuis Fragment
1.6.2: lorsque vous utilisezclearBackStackpour supprimer un ensemble de fragments, leViewModelde tout fragment imbriqué est désormais effacé lorsque lesViewModelsdu fragment parent sont effacés. (I6d83c, b/296173018)
Version 1.7.0-alpha06
4 octobre 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha06. Liste des commits de la version 1.7.0-alpha06
Mise à jour de la dépendance
- Les fragments ont été mis à jour pour dépendre de la nouvelle API
animateToStartajoutée dans Transition1.5.0-alpha04.
Version 1.7.0-alpha05
20 septembre 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha05. Liste des commits de la version 1.7.0-alpha05
Nouvelles fonctionnalités
- Les fragments sont désormais compatibles avec la prévisualisation du Retour lorsque vous utilisez AndroidX Transitions. Cela vous permet d'utiliser le geste Retour pour rechercher le fragment précédent avec votre transition AndroidX personnalisée avant de décider de valider ou d'annuler la transaction via le geste terminé. Vous devez dépendre de la version Transition
1.5.0-alpha03pour activer cette fonctionnalité. (Ib49b4, b/285175724)
Problèmes connus
- Un problème se produit actuellement : après avoir annulé un geste Retour avec une transition, la prochaine fois que vous lancerez le geste Retour, la transition ne s'exécutera pas, ce qui entraînera un écran vide. Cela peut être dû à un problème dans la bibliothèque de transition. (b/300157785). Si vous rencontrez ce problème, veuillez signaler un problème concernant Fragment en fournissant un exemple de projet qui reproduit votre problème. Vous pouvez désactiver la prévisualisation du retour en arrière en utilisant
FragmentManager.enabledPredictiveBack(false)dans leonCreate()de votre activité.
Version 1.7.0-alpha04
6 septembre 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha04. Liste des commits de la version 1.7.0-alpha04
Correction de bugs
- Correction d'un problème lors de l'annulation d'un geste de retour prédictif, où les fragments n'atteignaient pas l'état de cycle de vie correct. (I7cffe, b/297379023)
- Correction d'une régression qui permettait aux animations de s'exécuter avec les transitions. (I59f36)
- Correction d'un problème lié à l'utilisation de la prévisualisation du Retour avec des fragments, où une tentative de retour en arrière deux fois de suite sur l'avant-dernier fragment de la pile "Retour" entraînait un plantage. (Ifa1a4)
Version 1.7.0-alpha03
23 août 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha03. Liste des commits de la version 1.7.0-alpha03
Correction de bugs
- Correction d'un problème lié aux fragments lors de l'utilisation de la prévisualisation du Retour, qui entraînait l'ignorance du premier fragment de la pile de retour du gestionnaire de fragments et la fin de l'activité lors de l'utilisation du Retour système via la navigation à trois boutons ou le geste de prévisualisation du Retour. (I0664b, b/295231788)
Version 1.7.0-alpha02
9 août 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha02. Liste des commits de la version 1.7.0-alpha02
Correction de bugs
- Lorsque vous utilisez des fragments avec des gestes de prévisualisation du Retour à partir de l'API 34, si vous utilisez un système de transition qui ne prend pas en charge la recherche (
Animations,Transitions) ou aucune transition, les fragments attendent désormais la fin du geste avant d'exécuter l'action de retour. (I8100c)
Version 1.7.0-alpha01
7 juin 2023
Publication d'androidx.fragment:fragment-*:1.7.0-alpha01. Cette version est développée dans une branche interne.
Nouvelles fonctionnalités
- Les fragments sont désormais compatibles avec la prévisualisation du Retour dans l'application lorsque vous utilisez
Animator. Cela vous permet d'utiliser le geste Retour pour afficher le fragment précédent avec votre Animator personnalisé avant de décider de valider la transaction via le geste terminé ou de l'annuler. Vous pouvez également désactiver ce nouveau comportement en utilisant l'indicateur expérimentalenablePredictiveBack()et en transmettantfalse.
Version 1.6
Version 1.6.2
1er novembre 2023
Publication d'androidx.fragment:fragment-*:1.6.2. Liste des commits de la version 1.6.2
Correction de bugs
- Lorsque le fragment d'un
FragmentContainerViewest gonflé, ses états tels queFragmentManager, Host et ID sont désormais accessibles dans le rappelonInflate. (I1e44c, b/307427423) - Lorsque vous utilisez
clearBackStackpour supprimer un ensemble de fragments, leViewModelde tout fragment imbriqué est désormais effacé lorsque leViewModelsdu fragment parent est effacé. (I6d83c, b/296173018)
Version 1.6.1
26 juillet 2023
Publication d'androidx.fragment:fragment-*:1.6.1. Liste des commits de la version 1.6.1
Correction de bugs
- Correction d'un problème pour lequel l'état enregistré stocké lorsque l'activité était arrêtée, mais non détruite, était mis en cache de manière incorrecte, même après que l'instance de fragment a été replacée dans l'état
RESUMED. Cela entraînerait la réutilisation de cet état mis en cache si cette instance de fragment se trouvait dans la pile "Retour" lors de l'utilisation de l'API à piles "Retour" multiples pour enregistrer et restaurer ce fragment. (I71288, b/246289075)
Mise à jour de la dépendance
- Fragment dépend désormais d'Activity 1.7.2. Ce problème empêchait les utilisateurs de Kotlin d'étendre
ComponentDialogsans dépendance explicite sur Activity. (b/287509323)
Version 1.6.0
7 juin 2023
Publication d'androidx.fragment:fragment-*:1.6.0. Liste des commits de la version 1.6.0
Changements importants depuis la version 1.5.0
- L'état enregistré de
Fragments a été entièrement réparti entre l'état de la bibliothèque privée (classesParcelablepersonnalisées) et l'état fourni par le développeur, qui est maintenant toujours stocké dans unBundlequi permet de déterminer exactement l'origine de l'état d'un fragment. - L'interface
FragmentManager.OnBackStackChangedListenera été étendue avec deux rappels supplémentaires deonBackStackChangeStartedetonBackStackChangeCommittedqui sont appelés avec chaqueFragmentjuste avant d'être ajoutés/supprimés de la pile "Retour" du fragment et juste après la validation de la transaction, respectivement. FragmentStrictModea ajouté une vérificationWrongNestedHierarchyViolationqui détecte lorsqu'un fragment enfant est imbriqué dans la hiérarchie des vues de son parent, mais n'est pas ajouté auchildFragmentManagerde celui-ci.- Les API
FragmentetFragmentManagerqui acceptent unIntentouIntentSendersont désormais correctement annotées avec@NonNullpour éviter de transmettre une valeur nulle, car celle-ci ferait toujours planter immédiatement les API respectives du framework Android que ces méthodes appellent. DialogFragmentpermet désormais d'accéder àComponentDialogsous-jacent via l'APIrequireComponentDialog().- Fragment dépend désormais de Lifecycle
2.6.1. - Fragment dépend désormais de SavedState
1.2.1. - Fragment dépend désormais de ProfileInstaller
1.3.0. L'artefact
fragment-testing-manifestsépare les entrées du fichier manifeste des autres composants de fragment-testing. Vous pouvez ainsi effectuer les opérations suivantes :debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")Cela permet d'éviter les conflits dus au décalage de version entre
fragment-testingetandroidx.test.
Version 1.6.0-rc01
10 mai 2023
Publication d'androidx.fragment:fragment-*:1.6.0-rc01. Liste des commits de la version 1.6.0-rc01
Correction de bugs
- Correction d'un problème qui entraînait l'envoi de
ActivityResultavec le mauvais code de requête lorsque plusieurs requêtesstartActivityForResultétaient effectuées consécutivement. (If0b9d, b/249519359) - Correction d'un problème qui entraînait l'envoi des rappels
onBackStackChangeListenerpour les transactions qui ne modifiaient pas réellement la pile "Retour" si elles étaient combinées à des transactions qui la modifiaient. (I0eb5c, b/279306628)
Version 1.6.0-beta01
19 avril 2023
Publication d'androidx.fragment:fragment-*:1.6.0-beta01. Liste des commits de la version 1.6.0-beta01
Correction de bugs
- L'utilisation de
postponeEnterTransitionavec un délai d'attente, puis le remplacement du fragment reporté n'entraîne plus la fuite du fragment reporté. (I2ec7d, b/276375110) - Les nouveaux rappels
onBackStackChangeStartedetonBackStackChangeCommittedne distribueront désormais un fragment qu'une seule fois, même si plusieurs transactions contiennent le même fragment. (Ic6b69)
Version 1.6.0-alpha09
5 avril 2023
Publication d'androidx.fragment:fragment-*:1.6.0-alpha09. Liste des commits de la version 1.6.0-alpha09
Modifications apportées à l'API
DialogFragmentpermet désormais d'accéder àComponentDialogsous-jacent via l'APIrequireComponentDialog(). (I022e3, b/234274777)- Les API de fragment
commitNow(),executePendingTransactions()etpopBackStackImmediate()ont été annotées avec@MainThread, ce qui signifie qu'elles généreront désormais toutes des erreurs de compilation lorsqu'elles ne seront pas appelées à partir du thread principal au lieu d'attendre d'échouer au moment de l'exécution. (Ic9665, b/236538905)
Correction de bugs
- Correction d'un bug dans
FragmentManageroù l'enregistrement et la restauration dans le même frame pouvaient entraîner un plantage. (Ib36af, b/246519668) - Les rappels
OnBackStackChangedListeneronBackStackChangeStartedetonBackStackChangeCommittedne s'exécutent désormais que lorsque la pile "Retour"FragmentManagerest modifiée. (I66055, b/274788957)
Version 1.6.0-alpha08
22 mars 2023
Publication d'androidx.fragment:fragment-*:1.6.0-alpha08. Liste des commits de la version 1.6.0-alpha08
Nouveau comportement
- Le timing du rappel
OnBackStackChangedListener.onBackStackChangeCommiteda été ajusté pour s'exécuter avant les opérations de fragment. Cela permet de s'assurer que le rappel ne reçoit jamais de fragment détaché. (I66a76, b/273568280)
Correction de bugs
- Depuis Fragment
1.5.6: correction d'un problème pour lequel l'appel declearFragmentResultListenerà l'intérieur d'unsetFragmentResultListenerne fonctionnait pas si leLifecycleétait déjàSTARTEDet qu'un résultat était déjà disponible. (If7458)
Mises à jour des dépendances
- Fragment dépend désormais de Lifecycle
2.6.1. (586fe7) - Fragment dépend désormais de SavedState
1.2.1. (078e4e) - Fragment dépend désormais de ProfileInstaller
1.3.0. (3fc05b)
Version 1.6.0-alpha07
8 mars 2023
Publication d'androidx.fragment:fragment-*:1.6.0-alpha07. Liste des commits de la version 1.6.0-alpha07
Correction de bugs
- Depuis Fragment
1.5.6: correction d'un problème qui invalidait le menu de l'activité lors de la suppression d'un fragment, qu'il ait ajouté des éléments de menu ou non. (50f098, b/244336571)
Version 1.6.0-alpha06
22 février 2023
Publication d'androidx.fragment:fragment-*:1.6.0-alpha06. Liste des commits de la version 1.6.0-alpha06
Nouveau comportement
- Le nouveau rappel
onBackStackChangedStartedsur l'onBackStackChangedListenerdeFragmentManagerest désormais exécuté avant que les fragments ne commencent à atteindre leurs états cibles. (I34726)
Version 1.6.0-alpha05
8 février 2023
Publication d'androidx.fragment:fragment-*:1.6.0-alpha05. Liste des commits de la version 1.6.0-alpha05
Nouvelles fonctionnalités
- L'interface
FragmentManager.OnBackStackChagnedListenerpropose désormais deux autres rappels,onBackStackChangeStartedetonBackStackChangeCommitted, qui permettent de disposer d'informations supplémentaires et de contrôler le moment où les modifications de la pile "Retour" se produisent dans leFragmentManager. (Ib7ce5, b/238686802)
Modifications apportées à l'API
- Les API
FragmentetFragmentManagerqui acceptent unIntentouIntentSendersont désormais correctement annotées avec@NonNullpour éviter de transmettre une valeur nulle, car celle-ci ferait toujours planter immédiatement les API respectives du framework Android que ces méthodes appellent. (I06fd4)
Version 1.6.0-alpha04
7 décembre 2022
Publication d'androidx.fragment:fragment-*:1.6.0-alpha04. Liste des commits de la version 1.6.0-alpha04
Nouvelles fonctionnalités
FragmentStrictModea ajouté une vérificationWrongNestedHierarchyViolationqui détecte lorsqu'un fragment enfant est imbriqué dans la hiérarchie des vues de son parent, mais n'est pas ajouté auchildFragmentManagerde celui-ci. (I72521, b/249299268)
Nouveaux comportements
- Les fragments restaurent désormais l'état
SavedStateRegistryavantonAttach(), ce qui permet de garantir qu'il est disponible à partir de toutes les méthodes du cycle de vie en amont. (I1e2b1)
Modifications apportées à l'API
- L'artefact
fragment-testing-manifestsépare les entrées du fichier manifeste des autres composants de fragment-testing. Vous pouvez ainsi effectuer les opérations suivantes :
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Cela permet d'éviter les conflits dus au décalage de version entre fragment-testing et androidx.test.(I8e534, b/128612536)
Correction de bugs
- Dans Fragment
1.5.5: les fragments n'enregistrent plus de manière incorrecte l'étatViewModelcomme faisant partie de l'état enregistré du registre de la vue. (I10d2b, b/253546214)
Version 1.6.0-alpha03
5 octobre 2022
Publication d'androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 et androidx.fragment:fragment-testing:1.6.0-alpha03. Liste des commits de la version 1.6.0-alpha03
Modifications apportées à l'API
- Les classes qui étendent
DialogFragmentdevront désormais appeler la fonction Super dans les remplacements de la méthodeonDismiss(). (I14798, b/238928865)
Correction de bugs
- Correction des régressions causées par l'intégration des nouvelles interfaces de rappel de fournisseur (
OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) afin de garantir que les fragments reçoivent toujours les rappels appropriés. (I9b380,I34581, [I8dfe6, b/242570955],If9d6b,Id0096,I690b3,I2cba2)
Version 1.6.0-alpha02
24 août 2022
Publication d'androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 et androidx.fragment:fragment-testing:1.6.0-alpha02. Liste des commits de la version 1.6.0-alpha02
Corrections de bugs
- Depuis Fragment
1.5.2: correction d'un problème pour lequel l'exécution simultanée d'une transactionpopBackStack()etreplace()pouvait entraîner l'exécution du mauvaisAnimation/Animatorpar les fragments sortants. (Ib1c07, b/214835303)
Version 1.6.0-alpha01
27 juillet 2022
Publication d'androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 et androidx.fragment:fragment-testing:1.6.0-alpha01. Liste des commits de la version 1.6.0-alpha01
Nouveaux comportements
- L'état enregistré de
Fragments a été entièrement réparti entre l'état de la bibliothèque privée (classesParcelablepersonnalisées) et l'état fourni par le développeur, qui est maintenant toujours stocké dans unBundlequi permet de déterminer exactement l'origine de l'état d'un fragment. (b/207158202)
Corrections de bugs
- Depuis Fragment
1.5.1: correction d'une régression dans leDialogFragmentCallbacksDetectoroù l'utilisation de la version de lint fournie avec AGP 7.4 entraînait le plantage de lint. (b/237567009)
Mise à jour de la dépendance
- Depuis Fragment
1.5.1: la bibliothèque Fragment dépend désormais de Lifecycle2.5.1. (Id204c) - Depuis Fragment
1.5.1: la bibliothèque Fragment dépend désormais d'Activity1.5.1. (I10f07)
Version 1.5
Version 1.5.7
19 avril 2023
Publication d'androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 et androidx.fragment:fragment-testing:1.5.7. Liste des commits de la version 1.5.7
Correction de bugs
- L'utilisation de
postponeEnterTransitionavec un délai d'attente, puis le remplacement du fragment reporté n'entraîne plus la fuite du fragment reporté. (I2ec7d, b/276375110)
Version 1.5.6
22 mars 2023
Publication d'androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 et androidx.fragment:fragment-testing:1.5.6. Liste des commits de la version 1.5.6
Correction de bugs
- Correction d'un problème qui entraînait l'invalidation du menu de l'activité lors de la suppression d'un fragment, qu'il ait ajouté des éléments de menu ou non. (50f098, b/244336571)
- Correction d'un problème qui empêchait l'appel de
clearFragmentResultListenerdans unsetFragmentResultListenersi leLifecycleétait déjàSTARTEDet qu'un résultat était déjà disponible. (If7458)
Version 1.5.5
7 décembre 2022
Publication d'androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 et androidx.fragment:fragment-testing:1.5.5. Liste des commits de la version 1.5.5
Correction de bugs
- Les fragments n'enregistrent plus l'état
ViewModelde manière incorrecte dans le registre d'affichage enregistré. (I10d2b, b/253546214)
Version 1.5.4
24 octobre 2022
Publication d'androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 et androidx.fragment:fragment-testing:1.5.4. Liste des commits de la version 1.5.4
Correction de bugs
- Correction d'une erreur où le fait d'utiliser un
FragmentControllerpersonnalisé avec un hôte qui n'implémente pas une interface de rappel de fournisseur (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) et d'appeler sa fonction d'envoi obsolète ne permettait pas d'envoyer les fragments enfants. (I9b380)
Version 1.5.3
21 septembre 2022
Publication d'androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 et androidx.fragment:fragment-testing:1.5.3. Liste des commits de la version 1.5.3
Correction de bugs
- Correction d'une erreur qui générait des rappels
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()etonConfigurationChanged()pour les fragments de la pile "Retour". (I34581, I8dfe6, b/242570955) - Les fragments enfants imbriqués ne recevront plus plusieurs rappels
onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()ouonConfigurationChanged(). (I690b3, Id0096, If9d6b, I2cba2)
Version 1.5.2
10 août 2022
Publication d'androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 et androidx.fragment:fragment-testing:1.5.2. Liste des commits de la version 1.5.2
Corrections de bugs
- Correction d'un problème pour lequel l'exécution simultanée d'une transaction
popBackStack()etreplace()pouvait entraîner l'exécution du mauvaisAnimation/Animatorpar les fragments sortants. (Ib1c07, b/214835303)
Version 1.5.1
27 juillet 2022
Publication d'androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 et androidx.fragment:fragment-testing:1.5.1. Liste des commits de la version 1.5.1
Corrections de bugs
- Correction d'une régression dans le
DialogFragmentCallbacksDetectoroù l'utilisation de la version lint fournie avec AGP 7.4 entraînait le plantage de lint. (b/237567009)
Mise à jour de la dépendance
- La bibliothèque Fragment dépend désormais de Lifecycle
2.5.1. (Id204c) - La bibliothèque Fragment dépend désormais d'Activity
1.5.1. (I10f07)
Version 1.5.0
29 juin 2022
Publication d'androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 et androidx.fragment:fragment-testing:1.5.0. Liste des commits de la version 1.5.0
Changements importants depuis la version 1.4.0
- Intégration de CreationExtras :
Fragmentpeut désormais fournir unViewModelProvider.Factorysans état viaCreationExtrasde Lifecycle2.5.0. - Intégration des boîtes de dialogue de composants :
DialogFragmentutilise désormaisComponentDialogvia Activity1.5.0comme boîte de dialogue par défaut renvoyée paronCreateDialog(). - Refactorisation de l'état d'instance enregistré : les fragments ont commencé à modifier la façon dont ils enregistrent l'état de leur instance. Cela permet d'identifier clairement l'état qui a été enregistré dans le fragment et la source de l'état. Voici certains des changements apportés :
FragmentManagerenregistre désormais son état d'instance enregistré dansBundleau lieu de passer directement par unParcelablepersonnalisé.- Les résultats qui ont été définis via les
Fragment Result APIset qui n'ont pas encore été livrés sont maintenant enregistrés séparément de l'état interne deFragmentManager. - L'état associé à chaque fragment individuel est désormais enregistré séparément de l'état interne de
FragmentManager, ce qui vous permet de corréler la quantité d'états enregistrés associés à un fragment individuel avec les ID uniques présents dans le journal de débogage deFragment.
Autres changements
FragmentStrictModepermet désormais aux fragments tiers privés de contourner des pénalités de violation spécifiques en utilisantallowViolation()avec le nom de classe.- Les API Fragment permettant de fournir un menu à l'
ActionBarde votre activité ont été abandonnées. Les APIMenuHostetMenuProviderajoutées dans Activity1.4.0fournissent une surface d'API équivalente, compatible avec le cycle de vie et testable, que les fragments doivent utiliser.
Version 1.5.0-rc01
11 mai 2022
Publication d'androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 et androidx.fragment:fragment-testing:1.5.0-rc01. Liste des commits de la version 1.5.0-rc01
Refactorisation de l'état d'instance enregistré
- L'état associé à chaque fragment individuel est désormais enregistré séparément de l'état interne de
FragmentManager, ce qui vous permet de corréler la quantité d'états enregistrés associés à un fragment individuel avec les ID uniques présents dans le journal de débogage de Fragment. (a153e0, b/207158202)
Version 1.5.0-beta01
20 avril 2022
Publication d'androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 et androidx.fragment:fragment-testing:1.5.0-beta01. Liste des commits de la version 1.5.0-beta01
Modifications apportées à l'API
DialogFragmenta ajouté une méthodedismissNowqui utilisecommitNowpour la parité avec la fonctionshowNow. Notez que cela ne fermera pas immédiatement laDialog, mais cela mettra uniquement à jour l'état deFragmentManagerde manière synchrone. (I15c36, b/72644830)
Refactorisation de l'état d'instance enregistré
FragmentManagerenregistre désormais son état d'instance enregistré dansBundleau lieu de passer directement par unParcelablepersonnalisé. Il s'agit de la première étape pour fournir plus de transparence concernant ce qui est enregistré par Fragments. (I93807, b/207158202)- Les résultats définis via les API de Fragment Result qui n'ont pas encore été fournis sont maintenant enregistrés séparément de l'état interne de
FragmentManager. Vous pourrez ainsi déterminer plus précisément quels résultats sont enregistrés pour l'état de votre instance enregistrée. (I6ea12, b/207158202)
Version 1.5.0-alpha05
6 avril 2022
Publication d'androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 et androidx.fragment:fragment-testing:1.5.0-alpha05. Liste des commits de la version 1.5.0-alpha05
Modifications apportées à l'API
setHasOptionsMenu()deFragmenta été abandonné. Pour gérer les menus et leurs éléments de menu, utilisez les nouvelles API de menu, conformément aux notes de version de Fragment1.5.0-alpha04. (I7b4b4, b/226438239)
Version 1.5.0-alpha04
23 mars 2022
Publication d'androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 et androidx.fragment:fragment-testing:1.5.0-alpha04. Liste des commits de la version 1.5.0-alpha04
Modifications apportées à l'API
- Les API Fragment permettant de fournir un menu aux
ActionBarde votre activité, ont été abandonnées, car elles associent étroitement votre fragment à votre activité et ne peuvent pas être testées de façon isolée. Les APIMenuHostetMenuProviderajoutées dans Activity1.4.0-alpha01fournissent une surface d'API équivalente, compatible avec le cycle de vie et testable, que les fragments doivent utiliser. (I50a59, I20758)
Corrections de bugs
SavedStateViewFactoryest désormais compatible avecCreationExtras, même lorsqu'ils ont été initialisés avec unSavedStateRegistryOwner. Les arguments initialisés sont ignorés si des éléments supplémentaires sont fournis. (I6c43b, b/224844583)
Version 1.5.0-alpha03
23 février 2022
Publication d'androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 et androidx.fragment:fragment-testing:1.5.0-alpha03. Liste des commits de la version 1.5.0-alpha03
Modifications apportées à l'API
- Vous pouvez maintenant transmettre
CreationExtrasaux fonctionsby viewModels()etby activityViewModels(). (Ibefe7, b/217601110)
Nouveaux comportements
DialogFragmentutilise désormaisComponentDialogcomme boîte de dialogue par défaut renvoyée paronCreateDialog(). (If3784, b/217618170)
Version 1.5.0-alpha02
9 février 2022
Publication d'androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 et androidx.fragment:fragment-testing:1.5.0-alpha02. Liste des commits de la version 1.5.0-alpha02
Nouvelles fonctionnalités
FragmentStrictModepermet désormais aux fragments tiers privés de contourner des pénalités de violation spécifiques en utilisantallowViolation()avec le nom de classe. (I8f678)
Version 1.5.0-alpha01
26 janvier 2022
Publication d'androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 et androidx.fragment:fragment-testing:1.5.0-alpha01. Liste des commits de la version 1.5.0-alpha01
Nouvelles fonctionnalités
Fragments'intègre désormais avec ViewModel CreationExtras, qui a été introduit dans Lifecycle2.5.0-alpha01. (I3060b, b/207012585)
Corrections de bugs
- Depuis Fragment
1.4.1:FragmentContainerViewne génère plus d'exception d'état illégale lorsque les ID de vue générés à partir du fichier XML comportent des valeurs négatives. (Ic185b, b/213086140) - Depuis Fragment
1.4.1: lorsque vous utilisez un lambdaownerProducerpersonnalisé avec la fonction paresseuseby viewModels(), il utilise désormais ladefaultViewModelProviderFactoryde ce propriétaire si uneViewModelProvider.Factorypersonnalisée n'est pas fournie, au lieu d'utiliser toujours la fabrique du fragment. (I56170, b/214106513) - Correction d'un plantage survenant lors du premier accès au
ViewModelà partir d'un rappel deregisterForActivityResult()d'unFragment. (Iea2b3)
Version 1.4
Version 1.4.1
26 janvier 2022
Publication d'androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 et androidx.fragment:fragment-testing:1.4.1. Liste des commits de la version 1.4.1
Corrections de bugs
FragmentContainerViewne génère plus d'exception d'état illégale lorsque les ID de vue générés à partir du fichier XML comportent des valeurs négatives. (Ic185b, b/213086140)- Lorsque vous utilisez un lambda
ownerProducerpersonnalisé avec la fonction paresseuseby viewModels(), il utilise désormais ladefaultViewModelProviderFactoryde ce propriétaire si uneViewModelProvider.Factorypersonnalisée n'est pas fournie, au lieu d'utiliser toujours la fabrique du fragment. (I56170, b/214106513)
Version 1.4.0
17 novembre 2021
Publication d'androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 et androidx.fragment:fragment-testing:1.4.0. Liste des commits de la version 1.4.0
Changements importants depuis la version 1.3.0
- Les API
FragmentStrictModefournissent des vérifications d'exécution qui vous permettent de vérifier que votre application ou les bibliothèques dont vous dépendez n'appellent pas d'API de fragment obsolètes. Lorsqu'une violation est détectée, vous pouvez choisir d'afficher un message de journal, de déclencher votre propre écouteur personnalisé ou de faire planter votre application. LeFragmentStrictMode.Policyqui contrôle les vérifications activées et les pénalités déclenchées peut être défini sur unFragmentManagervia la nouvelle méthodesetStrictModePolicy(). Ce règlement s'applique à ceFragmentManageret de manière transitoire à tous les gestionnaires de fragments enfants qui ne définissent pas leur propre règlement unique. Consultez la section StrictMode pour les fragments. FragmentContainerViewfournit maintenant une méthodegetFragment()qui renvoie le dernier fragment ajouté au conteneur. Elle utilise la même logique quefindFragmentById()avec l'ID deFragmentContainerView, mais elle permet le chaînage de l'appel.val navController = binding.container.getFragment<NavHostFragment>().navControllerFragmentScenarioimplémente désormaisCloseable, ce qui vous permet de l'utiliser avec la méthodeusede Kotlin ou avec try-with-resources.Ajout de
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}pour indiquer si vous souhaitez activer l'animation de transition standard d'Activity issue de votre thème dans la transition de Fragments.L'API expérimentale de
FragmentManager.enableNewStateManager(boolean)a été supprimée et le nouveau gestionnaire d'état est désormais la seule option disponible.
Plusieurs piles "Retour"
FragmentManager gère une pile "Retour" composée de transactions de fragment qui utilisaient addToBackStack(). Vous pouvez ainsi faire apparaître ces transactions et rétablir l'état précédent en utilisant les mécanismes d'enregistrement d'état avec des fragments afin de permettre à vos fragments de rétablir leur état de manière appropriée.
Cette version développe ces mécanismes en fournissant trois nouvelles API FragmentManager : saveBackStack(String name), restoreBackStack(String name) et clearBackStack(String name). Ces API utilisent le même name que addToBackStack() pour enregistrer l'état de FragmentTransaction et l'état de chaque fragment ajouté à ces transactions. Elles vous permettent aussi de restaurer ultérieurement ces transactions et leurs fragments avec leur état intact. Cela vous permet de "basculer" efficacement entre plusieurs piles "Retour" en enregistrant la pile "Retour" actuelle et en restaurant une pile "Retour" enregistrée.
saveBackStack() fonctionne de façon semblable à popBackStack() dans la mesure où il est asynchrone et entraîne le retour (affichage) de toutes les transactions de fragment jusqu'à ce nom spécifique, ainsi que la destruction et la suppression de tous les fragments ajoutés. Toutefois plusieurs différences importantes existent entre ces concepts :
saveBackStack()est toujours inclusif.- Contrairement à
popBackStack(), qui affiche toutes les transactions de la pile "Retour" si le nom spécifié est introuvable dans la pile "Retour" ou si un nom nul est spécifié,saveBackStack()ne fait rien si vous n'avez pas déjà validé une transaction de fragment à l'aide deaddToBackStack()avec ce nom exact non nul. - L'état de tous les fragments ajoutés à partir de ces transactions est enregistré. Cela signifie que l'état d'affichage de chaque fragment est stocké, que
onSaveInstanceState()est appelé pour chaque fragment et que cet état est restauré, et toutes les instancesViewModelassociées à ces fragments sont conservées (etonCleared()n'est pas appelé sur ces derniers).
Les transactions de fragment pouvant être utilisées avec saveBackStack() doivent répondre à certains critères :
- Chaque transaction de fragment doit utiliser
setReorderingAllowed(true)pour garantir qu'elle peut être restaurée sous la forme d'une seule opération atomique. - L'ensemble de transactions enregistré doit être autonome (en d'autres termes, il ne doit pas faire explicitement référence à des fragments en dehors de cet ensemble de transactions) afin de pouvoir être restauré ultérieurement, quelles que soient les modifications apportées à la pile "Retour" entre-temps.
- Aucun fragment enregistré ne peut être un fragment conservé, ni disposer d'un fragment conservé dans son ensemble transitif de fragments enfants, afin de garantir que
FragmentManagerne renvoie aucune référence aux fragments enregistrés après l'enregistrement de la pile "Retour".
Tout comme saveBackStack(), restoreBackStack() et clearBackStack(), qui, respectivement, restaurent ou effacent une pile "Retour" précédemment enregistrée, ces deux actions n'ont aucun effet si vous n'avez pas encore appelé saveBackStack() avec le même nom.
Pour plus d'informations, consultez la section Plusieurs piles "Retour" : informations détaillées.
Version 1.4.0-rc01
3 novembre 2021
Publication d'androidx.fragment:fragment:1.4.0-rc01 sans aucune modification par rapport à la version 1.4.0-beta01 de Fragment. Liste des commits de la version 1.4.0-rc01
Version 1.4.0-beta01
27 octobre 2021
Publication d'androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 et androidx.fragment:fragment-testing:1.4.0-beta01. Liste des commits de la version 1.4.0-beta01
Corrections de bugs
- Les fragments parents vont maintenant répercuter
onHiddenChanged()dans toute leur hiérarchie descendante avant de lancer leur propre rappel. (Iedc20, b/77504618) - Le clavier va maintenant se fermer automatiquement lorsque vous passez d'un fragment avec un clavier ouvert à un fragment avec une vue recycleur. (I8b842, b/196852211)
DialogFragmentutilise désormaissetReorderingAllowed(true)pour toutes les transactions qu'il crée lorsque vous appelezshow(),showNow()oudismiss(). (Ie2c14)- L'avertissement lint extrêmement long de
DetachAndAttachFragmentInSameFragmentTransactiona été raccourci enDetachAndAttachSameFragment. (e9eca3)
Version 1.4.0-alpha10
29 septembre 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 et androidx.fragment:fragment-testing:1.4.0-alpha10. Liste des commits de la version 1.4.0-alpha10
lint
- Ajout de l'avertissement lint
DetachAndAttachFragmentInSameFragmentTransactionpour détecter les appels dedetach()etattach()sur le mêmeFragmentdans la mêmeFragmentTransaction. En effet, comme ces opérations complémentaires s'annulent l'une l'autre au cours de la même transaction, elles doivent être fractionnées en transactions distinctes pour avoir un effet. (aosp/1832956, b/200867930) - Ajout de l'erreur lint
FragmentAddMenuProviderindiquant d'utiliser le cycle de vie de la vue de Fragment au lieu du cycle de vie de Fragment lorsque vous utilisez l'APIaddMenuProviderdeMenuHost. (aosp/1830457, b/200326272)
Mises à jour de la documentation
- Le message d'abandon des API, désormais gérées par les API Activity Result, à savoir
startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionsetonRequestPermissionsResult, comporte davantage de détails. (cce80f) - Le message d'abandon pour
onActivityCreated()pourFragmentetDialogFragmentcomporte maintenant davantage de détails. (224db4)
Version 1.4.0-alpha09
15 septembre 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 et androidx.fragment:fragment-testing:1.4.0-alpha09. Liste des commits de la version 1.4.0-alpha09
Nouvelles fonctionnalités
- Vous pouvez maintenant appeler
clearBackStack(name)pour effacer tout état précédemment enregistré avecsaveBackStack(name). (I70cd7)
Modifications apportées à l'API
- La classe
FragmentContainerViewa été réécrite en Kotlin pour s'assurer que la fonctiongetFragmentrespecte la possibilité de valeur nulle. (If694a, b/189629145) - FragmentStrictMode est désormais écrit en Kotlin (I11767, b/199183506).
Corrections de bugs
- L'état d'un fragment ajouté avec
setReorderingAllowed(true), puis supprimé immédiatement avant l'exécution de transactions en attente n'était pas nettoyé correctement. Ce problème a été résolu. (I8ccb8)
Version 1.4.0-alpha08
1er septembre 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 et androidx.fragment:fragment-testing:1.4.0-alpha08. Liste des commits de la version 1.4.0-alpha08
Corrections de bugs
- Amélioration de la vérification lint
UseRequireInsteadOfGetpour une meilleure gestion des parenthèses redondantes. (I2d865) - Amélioration de la vérification lint
UseGetLayoutInflaterpour la gestion de cas particuliers supplémentaires. (Ie5423)
Version 1.4.0-alpha07
18 août 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 et androidx.fragment:fragment-testing:1.4.0-alpha07 sans modification notable. Liste des commits de la version 1.4.0-alpha07
Version 1.4.0-alpha06
4 août 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 et androidx.fragment:fragment-testing:1.4.0-alpha06. Liste des commits de la version 1.4.0-alpha06
Corrections de bugs
- Lors du basculement rapide entre plusieurs piles "Retour", certaines piles "Retour" s'affichaient en tant que
IllegalStateExceptionlors de la restauration d'uneFragmentTransactionou en tant que deuxième copie d'un fragment. Ce problème a été résolu. (I9039f) - Correction d'un problème pour lequel
FragmentManagerconservait une copie de l'état enregistré précédemment viasaveBackStack(), même après la restauration de cet état. (Ied212) - La méthode
dismissAllowingStateLoss()deDialogFragmentne plante plus lorsque vous l'appelez une fois l'état enregistré, lors de l'ajout spécifique de DialogFragment via la méthodeshow(FragmentTransaction, String). (I84422)
Version 1.4.0-alpha05
21 juillet 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 et androidx.fragment:fragment-testing:1.4.0-alpha05. Liste des commits de la version 1.4.0-alpha05
Corrections de bugs
- Depuis Fragment
1.3.6: la vue de Fragment est désormais correctement définie surGONEquand vous utilisezhide()lorsque le paramètretransitionGroup=”true”est défini pour la vue racine. (aosp/1766655, b/193603427) - Depuis Fragment
1.3.6: désormais, la première opération deFragmentActivitydans les rappels de cycle de vie qu'il remplace consiste à déverrouiller l'état enregistré. (I6db7a)
Mise à jour de la dépendance
- Depuis Fragment
1.3.6: les fragments dépendent désormais d'Activity1.2.4(I3a66c)
Version 1.4.0-alpha04
30 juin 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 et androidx.fragment:fragment-testing:1.4.0-alpha04. Liste des commits de la version 1.4.0-alpha04
Modifications apportées à l'API
FragmentManagerutilise désormaisSavedStateRegistryen arrière-plan pour enregistrer son état. Les méthodessaveAllState()etrestoreSavedState()sont également obsolètes dansFragmentController. Si vous utilisezFragmentControllerpour héberger des fragments en dehors deFragmentActivity, votreFragmentHostCallbacksdoit implémenterSavedStateRegistryOwner. (Iba68e, b/188734238)
Corrections de bugs
- L'appel de
saveBackStack()lors de la prise en charge de plusieurs piles "Retour" échouait en cas d'exécution simultanée d'uneFragmentTransactionutilisantreplace(). Ce problème a été résolu. (I73137) - Correction d'une
NullPointerExceptionqui se produisait après la restauration manuelle d'une pile "Retour" enregistrée qui contenait plusieurs transactions lors de l'utilisation de l'APIrestoreBackStack()pour la prise en charge de plusieurs piles "Retour". Cela a également permis de résoudre le problème pour lequelsetReorderingAllowed(true)n'était pas vérifié pour toutes les transactions. (I8c593) - Correction d'un problème pour lequel
FragmentManagercontinuait de restaurer par erreur l'état précédemment enregistré de fragments, même après leur suppression deFragmentManager, ce qui entraînait la croissance continue de l'état enregistré au fil du temps. (I1fb8e)
Version 1.4.0-alpha03
16 juin 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 et androidx.fragment:fragment-testing:1.4.0-alpha03. Liste des commits de la version 1.4.0-alpha03
Nouvelles fonctionnalités
- Toutes les classes
Violationde StrictMode de Fragment ont été mises à jour avec des messages d'erreur plus détaillés expliquant les détails de la violation. (b/187871638)FragmentTagUsageViolationcontient désormais un message d'erreur plus détaillé indiquant le conteneur parent auquel le fragment aurait été ajouté. (Ic33a7)WrongFragmentContainerViolationdispose désormais d'un message d'erreur plus détaillé incluant le conteneur auquel le fragment était en train d'être ajouté. (Ib55f8)- Les classes de cas d'utilisation de
TargetFragmentUsageViolationdisposent désormais de messages d'erreur plus détaillés pour inclure le fragment à l'origine de la violation, ainsi que toute autre information contenue. (Icc6ac) - Les classes qui étendent
RetainInstanceUsageViolationdisposent désormais de messages d'erreur plus détaillés qui incluent le fragment à l'origine de la violation. (I6bd55) FragmentReuseViolationdispose désormais d'un message d'erreur plus détaillé incluant l'ID précédent du fragment. (I28ce2)SetUserVisibleHintViolationdispose désormais d'un message d'erreur plus détaillé incluant la valeur de configuration en cours de l'indicateur visible par l'utilisateur. (Ib2d5f)
Nouveaux comportements
- Annulation de la restriction lors de l'appel de
fitsSystemWindowsdans uneFragmentContainerView. Votre application ne plante donc plus. (6b8ddd, b/190622202)
Corrections de bugs
- Depuis Fragment
1.3.5: correction d'une régression dans les transitions d'éléments partagés introduite dans Fragment1.3.4par aosp/1679887. Les fragments gèrent désormais correctement les groupes de transition (définis directement viatransitionGroup="true"ou indirectement viatransitionNameoubackground), et les éléments partagés ne génèrent plus deIndexOutOfBoundsException. (I16484, b/188679569, b/188969304) - Le
FragmentManagerne plante plus lorsque vous tentez de masquer un fragment en cours de suppression. (I573dd, b/183634730) - La vérification lint
OnCreateDialogIncorrectCallbackne plante plus lors de l'évaluation d'une variable de niveau supérieur. (0a9efa, b/189967522)
Version 1.4.0-alpha02
2 juin 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 et androidx.fragment:fragment-testing:1.4.0-alpha02. Liste des commits de la version 1.4.0-alpha02
Nouvelles fonctionnalités
FragmentStrictModeenregistre désormais toujours les cas de violation dans le journal lorsque la journalisation est activée via leFragmentManager, quelle que soit le règlement de mode strict actuellement utilisé. (I02df6, b/187872638)FragmentStrictModepermet désormais d'exempter certaines classesFragmentdesViolationen mode strict, ce qui permet à ces classes d'ignorer les pénalités éventuelles. (Ib4e5d, b/184786736)La classe de
ViolationFragmentStrictModea été développée pour ajouter des informations de structure en fonction de chaque violation. Cela vous permet de vérifier exactement la cause de la violation ainsi que le fragment à l'origine de la violation (If5118, b/187871150). ChaqueViolationcontient les éléments suivants :WrongFragmentContainerViolationcontient désormais leViewGroupauquelFragmenttentait d'être ajouté. (I83c75, b/187871150)TargetFragmentUsageViolationa été étendu àSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationetGetTargetFragmentRequestCodeUsageViolation,SetTargetFragmentUsageViolationcontenant le fragment cible et le code de requête. (I741b4, b/187871150)SetUserVisibleHintViolationcontient désormais la valeur booléenne transmise danssetUserVisibleHint(). (I00585, b/187871150)FragmentTagUsageViolationcontient désormais le ViewGroup dans lequel la balise<fragment>tentait de gonfler un fragment. (I5dbbc, b/187871150)FragmentReuseViolationcontient désormais l'ID unique de l'instance précédente deFragmentà l'origine de la violation. (I0544d, b/187871150)RetainInstanceUsageViolationest désormais abstrait et comporte deux sous-classes,SetRetainInstanceUsageViolationetGetRetainInstanceUsageViolation, représentant les deux cas pour le type de violation. (Ic81e5, b/187871150)
Nouveaux comportements
FragmentContainerViewgénère désormais une exception lorsque vous tentez de modifier l'attributfitsSystemWindowde façon programmatique ou via XML. Les encarts doivent être gérés par la vue de chaque fragment individuel. (Ie6651, b/187304502)
Version 1.4.0-alpha01
18 mai 2021
Publication d'androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 et androidx.fragment:fragment-testing:1.4.0-alpha01. Liste des commits de la version 1.4.0-alpha01
Nouvelles fonctionnalités
FragmentContainerViewfournit maintenant une méthodegetFragment()qui renvoie le dernier fragment ajouté au conteneur. Elle utilise la même logique quefindFragmentById()avec l'ID deFragmentContainerView, mais elle permet le chaînage de l'appel. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navControllerAjout de
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}pour indiquer si vous souhaitez activer l'animation de transition standard d'Activity issue de votre thème dans la transition de Fragments. (I46652)
Plusieurs piles "Retour"
FragmentManager gère une pile "Retour" composée de transactions de fragment qui utilisaient addToBackStack(). Vous pouvez ainsi faire apparaître ces transactions et rétablir l'état précédent en utilisant les mécanismes d'enregistrement d'état avec des fragments afin de permettre à vos fragments de rétablir leur état de manière appropriée.
Cette version développe ces mécanismes en fournissant deux nouvelles API FragmentManager : saveBackStack(String name) et restoreBackStack(String name). Ces API utilisent le même name que addToBackStack() pour enregistrer l'état de FragmentTransaction et l'état de chaque fragment ajouté à ces transactions. Elles vous permettent aussi de restaurer ultérieurement ces transactions et leurs fragments avec leur état intact. Cela vous permet de "basculer" efficacement entre plusieurs piles "Retour" en enregistrant la pile "Retour" actuelle et en restaurant une pile "Retour" enregistrée.
saveBackStack() fonctionne de façon semblable à popBackStack() dans la mesure où il est asynchrone et entraîne le retour (affichage) de toutes les transactions de fragment jusqu'à ce nom spécifique, ainsi que la destruction et la suppression de tous les fragments ajoutés. Toutefois plusieurs différences importantes existent entre ces concepts :
saveBackStack()est toujours inclusif.- Contrairement à
popBackStack(), qui affiche toutes les transactions de la pile "Retour" si le nom spécifié est introuvable dans la pile "Retour" ou si un nom nul est spécifié,saveBackStack()ne fait rien si vous n'avez pas déjà validé une transaction de fragment à l'aide deaddToBackStack()avec ce nom exact non nul. - L'état de tous les fragments ajoutés à partir de ces transactions est enregistré. Cela signifie que l'état d'affichage de chaque fragment est stocké, que
onSaveInstanceState()est appelé pour chaque fragment et que cet état est restauré, et toutes les instancesViewModelassociées à ces fragments sont conservées (etonCleared()n'est pas appelé sur ces derniers).
Les transactions de fragment pouvant être utilisées avec saveBackStack() doivent répondre à certains critères :
- Chaque transaction de fragment doit utiliser
setReorderingAllowed(true)pour garantir qu'elle peut être restaurée sous la forme d'une seule opération atomique. - L'ensemble de transactions enregistré doit être autonome (en d'autres termes, il ne doit pas faire explicitement référence à des fragments en dehors de cet ensemble de transactions) afin de pouvoir être restauré ultérieurement, quelles que soient les modifications apportées à la pile "Retour" entre-temps.
- Aucun fragment enregistré ne peut être un fragment conservé, ni disposer d'un fragment conservé dans son ensemble transitif de fragments enfants, afin de garantir que
FragmentManagerne renvoie aucune référence aux fragments enregistrés après l'enregistrement de la pile "Retour".
Tout comme saveBackStack(), restoreBackStack() n'a aucun effet si vous n'avez pas encore appelé saveBackStack() avec le même nom. (b/80029773)
StrictMode de Fragment
Les API FragmentStrictMode fournissent des vérifications d'exécution qui vous permettent de vérifier que votre application ou les bibliothèques dont vous dépendez n'appellent pas d'API de fragment obsolètes. Lorsqu'une violation est détectée, vous pouvez choisir d'afficher un message de journal, de déclencher votre propre écouteur personnalisé ou de faire planter votre application. Le FragmentStrictMode.Policy qui contrôle les vérifications activées et les pénalités déclenchées peut être défini sur un FragmentManager via la nouvelle méthode setStrictModePolicy(). Ce règlement s'applique à ce FragmentManager et de manière transitoire à tous les gestionnaires de fragments enfants qui ne définissent pas leur propre règlement unique. (#123, #131, #150, b/143774122)
detectFragmentReuse()détecte si une instanceFragmentprécédemment supprimée est de nouveau en cours d'ajout à unFragmentManager. Vous ne devez jamais interagir avec une instanceFragmentni conserver une instance vers celle-ci après qu'elle a été détruite et supprimée d'unFragmentManager. (#142, b/153738653)detectFragmentTagUsage()détecte si vous utilisez la balise<fragment>dans votre fichier XML de mise en page. Vous devez toujours utiliserFragmentContainerViewlorsque vous gonflez des fragments dans votre mise en page. (#141, b/153738235)detectWrongFragmentContainer()détecte lorsque vous ajoutez un fragment à un conteneur qui n'est pas un élémentFragmentContainerView. Vous devez toujours utiliserFragmentContainerViewcomme conteneur pour les fragments de votre mise en page. (#146, b/181137036)detectRetainInstanceUsage()détecte si vous utilisez les APIsetRetainInstance()ougetRetainInstance(), qui sont obsolètes. (#140, b/153737954)detectSetUserVisibleHint()détecte si vous utilisez l'APIsetUserVisibleHint()obsolète. (#136, b/153738974)detectTargetFragmentUsage()détecte si vous utilisez les APIsetTargetFragment(),getTargetFragment()ougetTargetRequestCode(), qui sont obsolètes. (#139, b/153737745)
Modifications apportées à l'API
- L'API expérimentale de
FragmentManager.enableNewStateManager(boolean)a été supprimée et le nouveau gestionnaire d'état est désormais la seule option disponible. (I90036, b/162776418) FragmentScenarioimplémente désormaisCloseable, ce qui vous permet de l'utiliser avec la méthodeusede Kotlin ou avec try-with-resources. (#121, b/143774122)
Nouvelles vérifications lint
- La vérification lint
UseGetLayoutInflatervous avertit désormais lorsque vous utilisezLayoutInflater.from(Context)dans unDialogFragment. Vous devez toujours utiliser la méthodegetLayoutInflater()du fragment de boîte de dialogue pour obtenir les valeurs appropriées pourLayoutInflater. (#156, b/170781346) - La vérification lint
DialogFragmentCallbacksDetectorvous avertit désormais lorsque vous appelezsetOnCancelListenerousetOnDismissListenerdans la méthodeonCreateDialog()d'unDialogFragment. Ces écouteurs appartiennent auDialogFragmentlui-même. Vous devez donc remplaceronCancel()etonDismiss()pour recevoir ces rappels. (#171, b/181780047, b/187524311)
Corrections de bugs
- Depuis Fragment 1.3.4 : correction d'une régression introduite dans Fragment
1.3.3lors de l'utilisation de l'APIViewTreeViewModelStoreOwner.get()avecViewModelProviderou de la méthode Jetpack Compose deviewModel()dans un fragment. Ces cas d'utilisation utilisent désormais correctement leViewModelProvider.Factoryfourni par votre fragment s'il remplacegetDefaultViewModelProviderFactory()(comme le font les fragments annotés@AndroidEntryPointlors de l'utilisation de Hilt). Si vous ne remplacez pas cette méthode, uneSavedStateViewModelFactoryqui enregistre et restaure son état parallèlement à la vue du fragment est créée en tant que fabrique par défaut. (I5cbfa, b/186097368) - Depuis Fragment 1.3.4 : lorsque vous utilisez
FragmentContainerViewavec l'API 29, les encarts ne sont plus envoyés indéfiniment, ce qui résout les problèmes avec les instancesBottomNavigationBaretFloatingActionButton. (I1bb78, b/186012452) - Depuis Fragment 1.3.4 : vous pouvez désormais récupérer votre Parcelable à partir du lot de résultats du fragment après l'arrêt du processus. (I65932, b/187443158)
- Depuis Fragment 1.3.4 : lors d'une transition d'élément partagé sur un ViewGroup, si
transitionGroupest défini sur "false" pour le ViewGroup, la transition s'effectuera désormais correctement. (I99675)
Contribution externe
- Merci à simonschiller pour avoir fait en sorte que
FragmentScenarioimplémenteCloseable. (#121, b/143774122) - Merci à simonschiller pour avoir ajouté l'ensemble de l'API
FragmentStrictModepour cette version ! (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745) - Merci à tatocaster d'avoir ajouté la vérification lint
UseGetLayoutInflater. (#156, b/170781346) - Merci à tatocaster d'avoir ajouté la vérification lint
DialogFragmentCallbacksDetector. (#171, b/181780047)
Version 1.3
Version 1.3.6
21 juillet 2021
Publication d'androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 et androidx.fragment:fragment-testing:1.3.6. Liste des commits de la version 1.3.6
Corrections de bugs
- Depuis Fragment
1.4.0-alpha03:FragmentManagerne plante plus lorsque vous tentez de masquer un fragment en cours de suppression. (I573dd, b/183634730) - La vue de Fragment est désormais correctement définie sur
GONEquand vous utilisezhide()lorsque le paramètretransitionGroup=”true”est défini pour la vue racine. (aosp/1766655, b/193603427) - Désormais, la première opération de
FragmentActivitydans les rappels de cycle de vie qu'il remplace consiste à déverrouiller l'état enregistré. (I6db7a)
Mise à jour de la dépendance
- Depuis Fragment
1.3.6: les fragments dépendent désormais d'Activity1.2.4(I3a66c)
Version 1.3.5
16 juin 2021
Publication d'androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 et androidx.fragment:fragment-testing:1.3.5. Liste des commits de la version 1.3.5
Corrections de bugs
- Correction d'une régression dans les transitions d'éléments partagés introduite dans Fragment
1.3.4par aosp/1679887. Les fragments gèrent désormais correctement les groupes de transition (définis directement viatransitionGroup="true"ou indirectement viatransitionNameoubackground), et les éléments partagés ne génèrent plus deIndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
Version 1.3.4
18 mai 2021
Publication d'androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 et androidx.fragment:fragment-testing:1.3.4. Liste des commits de la version 1.3.4
Corrections de bugs
- Correction d'une régression introduite dans Fragment
1.3.3lors de l'utilisation de l'APIViewTreeViewModelStoreOwner.get()avecViewModelProviderou de la méthode Jetpack Compose deviewModel()dans un fragment lors de l'utilisation de Hilt. Ces cas d'utilisation utilisent désormais correctement leViewModelProvider.Factoryfourni par votre fragment s'il remplacegetDefaultViewModelProviderFactory()(comme le font les fragments annotés@AndroidEntryPoint). Si vous ne remplacez pas cette méthode, uneSavedStateViewModelFactoryqui enregistre et restaure son état parallèlement à la vue du fragment est créée en tant que fabrique par défaut. (I5cbfa, b/186097368) - Lorsque vous utilisez
FragmentContainerViewavec l'API 29, les encarts ne sont plus envoyés indéfiniment, ce qui résout les problèmes avec les instancesBottomNavigationBaretFloatingActionButton. (I1bb78, b/186012452) - Vous pouvez désormais récupérer votre Parcelable à partir du lot de résultats du fragment après l'arrêt du processus. (I65932, b/187443158)
- Lors d'une transition d'élément partagé sur un ViewGroup, si
transitionGroupest défini sur "false" pour le ViewGroup, la transition s'effectuera désormais correctement. (I99675)
Version 1.3.3
21 avril 2021
Publication d'androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 et androidx.fragment:fragment-testing:1.3.3. Liste des commits de la version 1.3.3
Nouvelles fonctionnalités
- L'utilisation de
SavedStateViewModelFactoryfonctionne désormais lorsqu'elle est utilisée avec leSavedStateRegistryOwnerrenvoyé en utilisantViewTreeSavedStateRegistryOwner.get()avec la vue de Fragment. (I21acf, b/181577191)
Corrections de bugs
- Correction d'une régression introduite dans Fragment
1.3.2, qui empêchait l'exécution des animationspopEnterlors de l'affichage d'uneFragmentTransactioncontenant une opérationsetPrimaryNavFragment, comme celles utilisées parNavHostFragment(I38c87, b/183877426) FragmentContainerViews'assure désormais que chaqueFragmentreçoit un nouvel ensemble deWindowInsets, garantissant ainsi que chaque fragment peut désormais consommer les encarts de façon indépendante. (I63f68, b/172153900)DialogFragmentgère désormais correctement les cas où un fragment enfant est ajouté à un conteneur ayant le même ID qu'un conteneur de votre classeDialogpersonnalisée, ce qui résout les problèmes de hiérarchie des vues lorsque vous réutilisez des ID utilisés en interne par des boîtes de dialogue telles queBottomSheetDialog. (Ie6279, b/180021387)FragmentManager.dump()met désormais correctement en retrait le premier fragment de la liste des fragments actifs. (If5c33, b/183705451)
Corrections de bugs dans le nouveau gestionnaire d'état
- Le nouveau gestionnaire d'état de fragment gère désormais correctement les transitions de sortie avec les opérations de masquage. (I9e4de, b/184830265)
Version 1.3.2
24 mars 2021
Publication d'androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 et androidx.fragment:fragment-testing:1.3.2. Liste des commits de la version 1.3.2
Corrections de bugs dans le nouveau gestionnaire d'état
- Lors de l'exécution simultanée d'opérations
popBackStack()etcommit(), la dernière opération définira désormais la direction de toutes les animations au lieu d'exécuter des animations d'affichage et des animations d'entrée. (I7072e, b/181142246) - Le nom de transition des vues dans une hiérarchie d'éléments partagés ne sera plus effacé lors de la transition d'éléments partagés. (I4d4a6, b/179934757)
Mises à jour des dépendances
- Fragment dépend désormais d'Activity 1.2.2, ce qui résout un problème avec la vérification lint
InvalidFragmentVersionForActivityResultd'Activity lors de l'utilisation de Fragment 1.3.1 ou version ultérieure. - Fragment dépend désormais de Lifecycle 2.3.1.
Version 1.3.1
10 mars 2021
Publication d'androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 et androidx.fragment:fragment-testing:1.3.1. Liste des commits de la version 1.3.1
Nouvelles fonctionnalités
- Les boîtes de dialogue d'un
DialogFragmentpeuvent désormais accéder aux propriétaires de ViewTree via leur DecorView, ce qui garantit queDialogFragmentpeut être utilisé avecComposeView. (Ib9290, b/180691023)
Corrections de bugs
- Les fragments gonflés dans une activité déjà
RESUMEDà l'aide de FragmentContainerView s'affichent désormais correctement après une modification de configuration. (Ie14c8, b/180538371) - Il n'y a plus de
}supplémentaire à la fin du fragmenttoString()(I54705, b/177761088) - Les méthodes remplacées dans FragmentActivity héritent désormais correctement de la méthode de base javaDoc (I736ce, b/139548782).
- La documentation sur les paramètres de
setFragmentResultetsetFragmentResultListenera été mise à jour pour indiquer qu'ils n'acceptent plus les éléments pouvant être nuls (I990ba, b/178348386).
Corrections de bugs dans le nouveau gestionnaire d'état
- Correction d'une fuite de mémoire dans les fragments dus à
mFocusedView(Ib4e9e, b/179925887) - Les fragments appellent désormais correctement
onCreateOptionsMenulors de l'utilisation de transactions d'affichage et de masquage (I8bce8, b/180255554). - Les fragments enfants dont les transitions commencent avant la répartition du fragment atteindront désormais correctement l'état
RESUMED(Ic11e6, b/180825150) - Les fragments gonflés à l'aide de la balise
<fragment>arriveront désormais toujours à l'étatRESUMED(I452ac, (I9fa49).
Mises à jour des dépendances
- Fragment 1.3.1 dépend d'Activity
1.2.1. (I557b9)
Version 1.3.0
10 février 2021
Publication d'androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 et androidx.fragment:fragment-testing:1.3.0. Liste des commits de la version 1.3.0
Principales modifications depuis la version 1.2.0
- Nouveau gestionnaire d'état : une réécriture importante des éléments internes de
FragmentManagera résolu de nombreux problèmes liés à l'envoi d'événements de cycle de vie, d'animations et de transitions, ainsi qu'au traitement des fragments reportés. Intégration de l'API Activity Result : ajout de la compatibilité avec l'API
ActivityResultRegistryintroduite dans Activity1.2.0pour gérer les fluxstartActivityForResult()+onActivityResult()etrequestPermissions()+onRequestPermissionsResult()sans remplacer les méthodes dans votre fragment, et fourniture des hooks pour tester ces flux. Consultez la section Obtenir un résultat depuis une activité, qui a été mise à jour.- Cette version corrige un certain nombre de problèmes liés à des codes de requête non valides et à la distribution des demandes d'autorisation qui empêchent l'API Activity Result de fonctionner sur les versions précédentes de
FragmentActivity. Vous devez passer à Fragment 1.3.0 pour utiliser les API Activity Result dans uneFragmentActivityou uneAppCompatActivity.
- Cette version corrige un certain nombre de problèmes liés à des codes de requête non valides et à la distribution des demandes d'autorisation qui empêchent l'API Activity Result de fonctionner sur les versions précédentes de
API Fragment Result : ajout de la prise en charge de la transmission de résultats entre deux fragments via de nouvelles API sur
FragmentManager. Cela fonctionne pour les fragments de hiérarchie (parent/enfant), les DialogFragments et les fragments dans Navigation, et garantit que les résultats ne sont envoyés à votre fragment que lorsqu'il est au moins à l'étatSTARTED. Les API de fragment cible ont été abandonnées au profit de ces nouvelles API. Consultez Obtenir des résultats à l'aide de l'API Fragment Result.FragmentOnAttachListener: le rappelonAttachFragment()surFragmentActivityetFragmenta été abandonné. Un nouveauFragmentOnAttachListenera été ajouté pour fournir une alternative plus flexible, permettant la délégation deonAttachFragment()à des écouteurs séparés pouvant être testés, et une prise en charge de l'ajout d'un écouteur à des FragmentManagers autres que votre FragmentManager enfant direct.Améliorations de
FragmentScenario: la classeFragmentScenariode l'artefactfragment-testinga été réécrite en Kotlin et a reçu un certain nombre d'améliorations :FragmentScenarioutilise désormaissetMaxLifecycle()pour implémentermoveToState(), ce qui garantit un comportement cohérent dans tous les niveaux d'API et dissocie l'état du fragment de l'activité sous-jacente.FragmentScenariopermet désormais de définir unLifecycle.Stateinitial permettant de valider l'état du fragment avant de passer à chaqueLifecycle.Statepour la première fois.- Il existe désormais une alternative à l'API
FragmentScenariodeonFragment, sous la forme de la méthode d'extension Kotlin réifiée (withFragment), qui vous permet de renvoyer une valeur. En particulier, elle élimine les exceptions générées dans le bloc donné.
Prise en charge de
ViewTree:Fragmentest désormais compatible avec les APIViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)etViewTreeSavedStateRegistryOwnerajoutées dans Lifecycle2.3.0et SavedState1.1.0de sorte qu'il renverra le fragment en tant queViewModelStoreOwner, et unSavedStateRegistryOwneretLifecycleOwnerliés au cycle de vie de la vue du fragment lorsque vous utilisez uneViewdans unFragment.Modifications de l'animation
TRANSIT_: les effets par défaut des fragments,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEetTRANSIT_FRAGMENT_FADEutilisent désormaisAnimatorau lieu deAnimation. Les ressources utilisées pour créer ces animateurs sont désormais privées.Abandon de
setRetainInstance(): la méthodesetRetainInstance()exécutée sur des fragments a été abandonnée. Avec l'introduction de ViewModels, les développeurs disposent d'une API spécifique pour conserver l'état, qui peut être associée aux graphiques d'Activity, Fragments et Navigation. Cela permet aux développeurs d'utiliser un fragment normal non conservé et de conserver l'état spécifique qu'ils souhaitent conserver séparément, évitant ainsi une source courante de fuites, tout en conservant les propriétés utiles de création et de destruction uniques de l'état conservé (à savoir, le constructeur deViewModelet le rappelonCleared()qu'il reçoit).Abandon de l'adaptateur ViewPager 1 : avec le lancement de ViewPager2
1.0.0, les classesFragmentPagerAdapteretFragmentStatePagerAdapterpermettant d'interagir avecViewPageront été abandonnées. Consultez Effectuer une migration de ViewPager vers ViewPager2.
Version 1.3.0-rc02
27 janvier 2021
Publication d'androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 et androidx.fragment:fragment-testing:1.3.0-rc02. Liste des commits de la version 1.3.0-rc02
Corrections de bugs
- Correction d'un problème pour lequel un
DialogFragmentparent s'affichait au-dessus d'unDialogFragmentenfant après une modification de configuration. Les fragments de la boîte de dialogue enfant apparaissent désormais toujours au-dessus du fragment de boîte de dialogue parent. (I30806, b/177439520) - Résolution du problème où l'exécution d'une opération
hideavec uneAnimationentraînait le clignotement du fragment masqué à la fin de l'animation. (I57e22, b/175417675) - Les fragments avec des transitions ajoutées avant que la hiérarchie de la vue soit associée atteignent désormais correctement l'état
RESUMED. (I1fc1d, b/177154873)
Corrections de bugs dans le nouveau gestionnaire d'état
- La vue
Lifecycledu fragment gère désormais correctement les cas où la vue du fragment est détruite avant queLifecyclen'atteigneCREATED. Cela évite les exceptions indiquant "no event down from INITIALIZED". (eda2bd, b/176138645) - Les fragments qui utilisent un
Animators'affichent désormais dans le bon ordre lors de l'utilisation deFragmentContainerView. (Id9aa3, b/176089197)
Version 1.3.0-rc01
16 décembre 2020
Publication d'androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 et androidx.fragment:fragment-testing:1.3.0-rc01. Liste des commits de la version 1.3.0-rc01
Corrections de bugs
onPrepareOptionsMenu()suit désormais la même logique queonCreateOptionsMenu()et n'est plus appelée lorsqu'un fragment parent appellesetMenuVisibility(false). (Id7de8, b/173203654)
Corrections de bugs dans le nouveau gestionnaire d'état
- Correction de la fuite et de l'artefact visuel lors de l'ajout d'un fragment avec une
Animationà uneFragmentContainerView, puis lors de l'interruption de cet ajout avec une opération d'affichage. (I952d8) - La vue du fragment restait dans la hiérarchie des vues si elle était remplacée lors de l'utilisation de ses méthodes
onCreate()ouonViewCreated(). Ce problème a été résolu. (I8a7d5) - La sélection est désormais correctement restaurée sur les vues racines de Fragment lorsqu'elles sont réactivées. (Ifc84b)
- La combinaison des opérations d'affichage et de remplacement de la même transaction de fragment affiche désormais les animations appropriées (Ifd4e4, b/170328691).
Version 1.3.0-beta02
2 décembre 2020
Publication d'androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 et androidx.fragment:fragment-testing:1.3.0-beta02. Liste des commits de la version 1.3.0-beta02
Nouvelles fonctionnalités
FragmentScenarioa été entièrement converti en Kotlin tout en conservant la compatibilité source et binaire via l'utilisation des interfaces fonctionnelles de Kotlin 1.4 pourFragmentAction. (I19d31)
Nouveaux comportements
- Les FragmentContainerViews qui ne gonflent pas un fragment à l'aide de l'attribut
classouandroid:namepeuvent désormais être utilisées en dehors d'uneFragmentActivity. (Id4397, b/172266337) - Si vous essayez de définir le cycle de vie maximal d'un fragment sur
DESTROYED, uneIllegalArgumentExceptionest désormais générée (Ie7651, b/170765622) - L'initialisation d'un FragmentScenario avec un état
DESTROYEDgénère désormais uneIllegalArgumentException(I73590, b/170765622)
Corrections de bugs dans le nouveau gestionnaire d'état
- La vue ne pouvait pas atteindre son état final si vous interrompiez une transition de fragment qui utilisait
Animatorou l'une des options deTRANSIT_FRAGMENT_. Ce problème a été résolu. (I92426, b/169874632) - Correction d'un problème qui empêchait la destruction correcte des fragments ayant une
Animationen sortie. (I83d65) - Les fragments dont les effets ont été inversés peuvent désormais s'annuler et redémarrer avec l'effet d'entrée approprié. (I62226, b/167092035)
- L'
Animatorde sortie d'unhide()ne s'exécutait pas. Ce problème a été résolu. (Id7ffe) - Désormais, les fragments s'affichent correctement lorsqu'ils sont reportés, puis immédiatement démarrés. (Ie713b, b/170022857)
- Les fragments qui suppriment leur vue sélectionnée lors d'une animation n'essaieront plus de rétablir la sélection sur la vue détachée une fois qu'ils auront atteint
RESUMED(I38c65, b/172925703).
Contribution externe
FragmentFactorymet désormais en cache les classes de fragment séparément pour les différentes instancesClassLoader. Merci, Simon Schiller ! (#87, b/113886460)
Version 1.3.0-beta01
1er octobre 2020
Publication d'androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 et androidx.fragment:fragment-testing:1.3.0-beta01. Liste des commits de la version 1.3.0-beta01
Nouvelles fonctionnalités
setMaxLifecycle()permet désormais de définir l'étatLifecyclesurINITIALIZINGtant que le fragment n'a pas été placé à l'étatCREATED. (b/159662173)
Modifications apportées à l'API
- Mise à jour d'AndroidX pour utiliser Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Nouveaux comportements
- Les fichiers de ressources fragmentés ont été correctement rendus privés. (aosp/1425237)
Corrections de bugs
- Désormais, les fragments gonflés à l'aide de la balise
<fragment>attendent que leurs vues soient ajoutées à un conteneur avant de passer à l'état STARTED (I02f4c). - Les fragments visibles exécutent désormais correctement leurs effets de sortie lorsque
setMaxLifecycle()est défini surCREATED. (b/165822335) - La suppression d'un fragment dissocié qui n'a pas été ajouté à la pile "Retour" n'entraîne plus de fuite de mémoire. Merci Nicklas Ansman Giertz ! (b/166489383)
- Désormais, les fragments actifs auront toujours un
FragmentManagernon nul, et les fragments avec unFragmentManagernon nul seront toujours considérés comme actifs. (aosp/1422346) - Les effets par défaut des fragments,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEetTRANSIT_FRAGMENT_FADE, utilisent désormaisAnimatorau lieu deAnimation. (b/166155034)
Corrections de bugs dans le nouveau gestionnaire d'état
- Les fragments restaurent désormais correctement l'état de sélection de leur vue juste avant de lancer leur animation. (Icc256)
- Les fragments qui ne comportent qu'une transition d'élément partagé remplissent désormais correctement leurs effets spéciaux, ce qui signifie qu'ils passent réellement à leur état final (Iaebc7, b/166658128).
- Les vues de fragment sont désormais toujours supprimées du conteneur avant d'être détruites. (Id5876)
- Le nouveau gestionnaire d'état supprime désormais systématiquement la vue de fragment sortant avant d'ajouter la vue de fragment entrant. (I41a6e)
- Les modifications explicites de la visibilité de la vue d'un fragment sont désormais respectées par le nouveau gestionnaire d'état. Cela signifie que si vous définissez la vue d'un fragment entrant sur
INVISIBLEavant le début de l'animation, celle-ci restera invisible. (b/164481490) - Les fragments donnent désormais la priorité à
Animatorspar rapport àAnimations. Cela signifie qu'un fragment avec les deux n'exécute queAnimatoret ignoreAnimation. (b/167579557) - Le nouveau gestionnaire d'état n'entraîne plus le clignotement des fragments lors de l'utilisation d'animations entrantes. (b/163084315)
Problème connu
Lorsque vous utilisez le nouveau gestionnaire d'état, si vous appuyez sur la touche Retour pendant un effet spécial d'entrée, au lieu de revenir au fragment précédent, l'ancien fragment n'est jamais ajouté à nouveau, ce qui génère un écran vide. (b/167259187, b/167092035, b/168442830)
Version 1.3.0-alpha08
19 août 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 et androidx.fragment:fragment-testing:1.3.0-alpha08. Liste des commits de la version 1.3.0-alpha08
Nouveau gestionnaire d'état
Cette version inclut une refactorisation majeure de la gestion de l'état interne de FragmentManager, qui affecte l'envoi de méthodes, d'animations et de transitions du cycle de vie et la manière dont les transactions reportées sont gérées. Cette option est activée par défaut. Pour en savoir plus, consultez l'article de blog Fragments: Rebuilding the Internals (Fragments : refonte des principes internes). (b/139536619, b/147749580)
- Vous pouvez utiliser une API expérimentale dans
FragmentManager.enableNewStateManager(boolean)pour contrôler si FragmentManager utilise le nouveau gestionnaire d'état. (I7b6ee)
Les problèmes suivants ne sont résolus que lors de l'utilisation du nouveau gestionnaire d'état :
- Le fragment précédent d'une opération
replaceest maintenant correctement arrêté avant le démarrage du nouveau fragment. (b/161654580) - Les fragments empêchent à présent l'exécution de plusieurs animations en concurrence sur les mêmes fragments, évitant ainsi les cas où
Animationremplacerait tous les effetsTransitionou l'exécution d'unAnimatoret d'uneTransitionsur un fragment individuel. (b/149569323) - L'
enterTransitionet l'exitTranstionde tous les fragments entrants et sortants sont maintenant exécutées au lieu de celles du premier fragment entrant et du dernier fragment sortant uniquement. (b/149344150) - Les fragments reportés ne sont plus bloqués à l'état
CREATED, mais sont déplacés vers l'étatSTARTEDavec les autres fragments. (b/129035555) - Correction d'un problème qui entraînait l'exécution d'opérations dans le désordre par
FragmentManagerlors de la combinaison d'une transaction réorganisée reportée et d'une transaction non réorganisée. (b/147297731) - L'affichage simultané de plusieurs fragments n'entraîne plus la visibilité temporaire des fragments intermédiaires lors du report de fragments. (b/37140383)
FragmentManagerrenvoie maintenant les fragments corrects lors de l'appel defindFragmentById()oufindFragmentByTag()à partir du rappelonAttachFragment(). (b/153082833)- Les fragments n'appellent plus
onCreateView()sur les fragments détruits lorsque le fragment qui les remplace est reporté. (b/143915710) - Le message d'erreur qui s'affiche lorsque vous tentez de combiner les instances
Transitiondu framework etTransitiond'AndroidX mentionne désormais le fragment avec une transition non valide. (b/155574969)
Nouveaux comportements
- Vous pouvez maintenant appeler
launch()sur unActivityResultLauncherdans la méthode de cycle de vieonCreate()d'un fragment. (b/161464278) - L'appel de
registerForActivityResult()aprèsonCreate()génère désormais une exception indiquant que l'opération n'est pas autorisée au lieu de ne retourner aucun résultat sans en informer l'utilisateur après une modification de la configuration. (b/162255449) FragmentActivityutilise désormais l'APIOnContextAvailableListenerintroduite dans Activity1.2.0-alpha08pour restaurer l'état deFragmentManager. Tous les écouteurs ajoutés aux sous-classes deFragmentActivitys'exécuteront après cet écouteur. (I513da)
Corrections de bugs
- Les
ActivityOptionstransmises lors de l'utilisation destartIntentSenderForResult()sont désormais respectées. (b/162247961)
Problème connu
- Lors de l'utilisation du nouveau gestionnaire d'état, si vous définissez directement la visibilité de la vue racine du fragment après
onViewCreated()et avantonResume(), la visibilité que vous avez définie sera remplacée parFragmentManager, qui contrôle la visibilité de la vue racine. Pour contourner ce problème, vous devriez toujours utiliser les opérationshide()etshow()pour modifier la visibilité de votre fragment. (b/164481490)
Version 1.3.0-alpha07
22 juillet 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 et androidx.fragment:fragment-testing:1.3.0-alpha07. Liste des commits de la version 1.3.0-alpha07
Nouvelles fonctionnalités
FragmentScenariopermet désormais de définir un état de cycle de vie initial deCREATED,STARTEDouRESUMEDau lieu de toujours faire passer le fragment à l'étatRESUMED. (b/159662750)- Ajout d'une alternative à l'API
FragmentScenariodeonFragmentsous la forme de la méthode d'extension réifiée Kotlin (withFragment) qui vous permet de renvoyer une valeur. En particulier, elle élimine les exceptions générées dans le bloc donné. (b/158697631)
Nouveaux comportements
FragmentScenarioutilise désormaissetMaxLifecycle()pour implémentermoveToState(), ce qui garantit un comportement cohérent dans tous les niveaux d'API et dissocie l'état du fragment de l'activité sous-jacente. (b/156527405)- Le
SavedStateRegistryOwnerrenvoyé parViewTreeSavedStateRegistryOwnerest désormais lié au cycle de vie de la vue du fragment. Ainsi, son état est enregistré et restauré en même temps que la vue du fragment. (b/158503763)
Corrections de bugs
- Les fragments attendent désormais que la vue du fragment soit associée avant d'appeler
ViewCompat.requestApplyInsets(), ce qui évite les cas où la requête d'encart était supprimée. (b/158095749) - L'appel de
clearFragmentResultListenerefface désormais correctement l'observateur de cycle de vie. (b/159274993)
Version 1.3.0-alpha06
10 juin 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 et androidx.fragment:fragment-testing:1.3.0-alpha06. Liste des commits de la version 1.3.0-alpha06
Nouvelles fonctionnalités
- Le rappel
onAttachFragment()surFragmentActivityetFragmenta été abandonné. Un nouveauFragmentOnAttachListenera été ajouté pour fournir une alternative plus flexible, permettant la délégation deonAttachFragment()à des écouteurs séparés pouvant être testés, et une prise en charge de l'ajout d'un écouteur à des FragmentManagers autres que votre FragmentManager enfant direct. (I06d3d)
Corrections de bugs
- L'état de la vue des fragments parents est maintenant rétabli avant celui de leurs fragments enfants, ce qui résout un problème d'ordre visuel après une modification de configuration lorsqu'un
DialogFragmentaffichait un autreDialogFragmenten tant que fragment enfant. (b/157195715) - Correction d'un problème qui empêchait la vérification lint
UseRequireInsteadOfGetde gérer correctement les utilisations opérateurs?.et!!de façon enchaînée. (b/157677616)
Version 1.3.0-alpha05
20 mai 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 et androidx.fragment:fragment-testing:1.3.0-alpha05. Liste des commits de la version 1.3.0-alpha05
Nouvelles fonctionnalités
- Ajout de la prise en charge de
ViewTreeViewModelStoreOwnerà partir de Lifecycle2.3.0-alpha03et deViewTreeSavedStateRegistryOwnerà partir de SavedState1.1.0-alpha01lorsque vous utilisez uneViewdans uneFragment. (aosp/1297993, aosp/1300264)
Modifications apportées à l'API
- Les API
setFragmentResult()etsetFragmentResultListener()acceptent désormais respectivement les valeursBundleetFragmentResultListener. Pour effacer explicitement un résultat ou un écouteur précédemment défini, utilisez les nouvelles méthodesclearFragmentResult()etclearFragmentResultListener(). (b/155416778) - Les extensions Kotlin
setFragmentResultListener()qui acceptent un lambda sont désormais marquées commeinline. (b/155323404)
Nouveaux comportements
- Les
startActivityForResult(),startIntentSenderForResult()etrequestPermissionsprécédemment abandonnés surFragment, utilisent désormaisActivityResultRegistryen interne, ce qui supprime la restriction qui consistait à n'utiliser que les bits inférieurs (en dessous de0xFFFF) pour vos codes de requête lors de l'utilisation de ces API. (b/155518741)
Mises à jour de la documentation
- Développement de la documentation sur les constructeurs
Fragment(@LayoutRes int)etDialogFragment(@LayoutRes int)pour préciser qu'ils doivent être appelés à partir du constructeur sans argument de vos sous-classes lorsque vous utilisez la valeur par défautFragmentFactory. (b/153042497)
Version 1.3.0-alpha04
29 avril 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 et androidx.fragment:fragment-testing:1.3.0-alpha04. Liste des commits de la version 1.3.0-alpha04
Nouvelles fonctionnalités
- Ajout de la prise en charge de la transmission de résultats entre deux fragments via de nouvelles API sur
FragmentManager. Cela fonctionne pour les fragments de hiérarchie (parent/enfant), les DialogFragments et les fragments dans Navigation, et garantit que les résultats ne sont envoyés à votre fragment que lorsqu'il est au moins à l'étatSTARTED. (b/149787344)
Modifications apportées à l'API
- Les API de fragment cible ont été abandonnées. Pour transférer des données entre fragments, utilisez plutôt les nouvelles API Fragment Result. (b/149787344)
- Les API
startActivityForResult()/onActivityResult()etrequestPermissions()/onRequestPermissionsResult()sur Fragment ont été abandonnées. Veuillez utiliser les API Activity Result. (aosp/1290887) - Modification destructive d'Activity
1.2.0-alpha04: la méthodeprepareCall()a été renommée enregisterForActivityResult(). (aosp/1278717)
Corrections de bugs
- Le
getViewLifecycleOwner()du fragment est maintenant arrêté avant l'appel deonSaveInstanceState(), reflétant le comportement du cycle de vie du fragment. (b/154645875) - L'appel de
setMenuVisibility(false)sur un fragment modifie désormais correctement la visibilité des menus fournis par ses fragments enfants. (b/153593580) - Correction d'une
illegalStateExceptionlors de l'ajout d'un fragment à la hiérarchie de vues d'unDialogFragmentavecFragmentContainerView. (b/154366601) - La méthode
getDefaultViewModelProviderFactory()exécutée sur des fragments ne plante plus lorsque vous hébergez vos fragments en dehors d'une activité. (b/153762914)
Version 1.3.0-alpha03
1er avril 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 et androidx.fragment:fragment-testing:1.3.0-alpha03. Liste des commits de la version 1.3.0-alpha03
Modifications apportées à l'API
- Les méthodes
prepareCallsurFragmentsont désormaisfinal. (b/152439361)
Corrections de bugs
- Correction d'une régression introduite dans Fragment
1.3.0-alpha02lors de l'utilisation deBottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163) - Correction d'un plantage lors de l'utilisation de
prepareCallà partir d'un fragment après un changement de configuration. (b/152137004) - Correction d'un problème pour lequel les transitions d'élément partagé et de sortie étaient ignorées lors de l'utilisation de
setTargetFragment(). (b/152023196) - Depuis Fragment
1.2.4: mise à jour des règles ProGuard de Fragment pour permettre l'obscurcissement des fragments conservés. (b/151605338) - Depuis Fragment
1.2.4: désactivation de la règle lintFragmentLiveDataObservesur les classesDialogFragment, car leur cycle de vie et le cycle de vie de leur vue sont toujours synchronisés. Vous pouvez donc utiliserthisouviewLifecycleOwnerlors de l'appel deobserve. (b/151765086)
Modifications de la dépendance
- Les fragments dépendent d'Activity
1.2.0-alpha03, qui a considérablement amélioré l'API Activity Result introduite dans Activity1.2.0-alpha02.
Version 1.3.0-alpha02
18 mars 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 et androidx.fragment:fragment-testing:1.3.0-alpha02. Liste des commits de la version 1.3.0-alpha02
Nouvelles fonctionnalités
- Ajout de la compatibilité avec l'API
ActivityResultRegistryintroduite dans Activity1.2.0-alpha02pour gérer les fluxstartActivityForResult()+onActivityResult()etrequestPermissions()+onRequestPermissionsResult()sans remplacer les méthodes dans votre fragment, et fourniture des hooks pour tester ces flux. Consultez la section Obtenir un résultat depuis une activité, qui a été mise à jour. (b/125158199)
Modifications apportées à l'API
DialogFragmentfournit désormais un constructeur qui accepte une@LayoutResindiquant la mise en page queonCreateView()doit gonfler par défaut. (b/150327080)- La méthode
onActivityCreated()est désormais obsolète. Le code touchant la vue du fragment doit être effectué dansonViewCreated()(appelé juste avantonActivityCreated()) et tout autre code d'initialisation dansonCreate(). Pour recevoir un rappel lorsque la méthodeonCreate()de l'activité est terminée, unLifeCycleObserverdoit être enregistré dans leLifecyclede l'activité dansonAttach(), puis supprimé une fois le rappelonCreate()reçu. (b/144309266)
Corrections de bugs
- Depuis Fragment
1.2.3: correction d'un bug dansDialogFragmentqui entraînait uneStackOverflowErrorlors de l'appel degetLayoutInflater()depuisonCreateDialog(). (b/117894767, aosp/1258664) - Depuis Fragment
1.2.3: réduction du champ d'application des règles ProGuard incluses de Fragment pour que les classes Fragment inutilisées puissent être supprimées. (b/149665169) - Depuis Fragment
1.2.3: correction des faux positifs dans la vérification lintUseRequireInsteadOfGetlors de l'utilisation d'un nom de variable locale qui occultait le nom de la propriété Kotlin. (b/149891163) - Depuis Fragment
1.2.3:FragmentContainerViewne génère plus uneUnsupportedOperationExceptionen raison de l'utilisation d'un constructeur incorrect dans l'aperçu de mise en page. (b/149707833)
Problèmes connus
BottomSheetDialogFragmentne positionne plus correctement sa boîte de dialogue à l'écran. (b/151652127)
Version 1.3.0-alpha01
4 mars 2020
Publication d'androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 et androidx.fragment:fragment-testing:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01
Nouvelles fonctionnalités
- Ajout de la prise en charge de l'API
ViewTreeLifecycleOwner.get(View)ajoutée à Lifecycle2.3.0-alpha01, qui permet de renvoyer leviewLifecycleOwnerdu fragment en tant queLifecycleOwnerpour toutes les vues renvoyées paronCreateView(). (aosp/1182955)
Modifications apportées à l'API
- La méthode
setRetainInstance()exécutée sur des fragments a été abandonnée. Avec l'introduction de ViewModels, les développeurs disposent d'une API spécifique pour conserver l'état, qui peut être associée aux graphiques d'Activity, Fragments et Navigation. Cela permet aux développeurs d'utiliser un fragment normal non conservé et de conserver l'état spécifique qu'ils souhaitent conserver séparément, évitant ainsi une source courante de fuites, tout en conservant les propriétés utiles de création et de destruction uniques de l'état conservé (à savoir, le constructeur deViewModelet le rappelonCleared()qu'il reçoit). (b/143911815) - Avec le lancement de ViewPager2
1.0.0, les classesFragmentPagerAdapteretFragmentStatePagerAdapterpermettant d'interagir avecViewPageront été abandonnées. Consultez Effectuer une migration de ViewPager vers ViewPager2. (b/145132715)
Corrections de bugs
- Désormais, les règles ProGuard de Fragment conservent uniquement les classes
Fragmentdes constructeurs par défaut qui sont utilisées, et non celles de toutes les instancesFragment, ce qui corrige une régression introduite dans Fragment1.2.1. (b/149665169 - Les règles lint
require___()ajoutées dans Fragment1.2.2n'engendrent plus de faux positifs sur les variables locales qui portent le même nom que les noms de propriété Kotlin occultés (par exemple,view). (b/149891163) FragmentContainerViewne génère plus deUnsupportedOperationExceptionlors de l'utilisation de l'aperçu de mise en page dans Android Studio. (b/149707833)- Correction du problème pour lequel les fragments conservés qui étaient ajoutés après l'enregistrement de l'état n'étaient pas continuellement recréés, puis détruits après chaque modification de configuration. (b/145832397)
Version 1.2.5
Version 1.2.5
10 juin 2020
Publication d'androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 et androidx.fragment:fragment-testing:1.2.5. Liste des commits de la version 1.2.5
Corrections de bugs
- Le
getViewLifecycleOwner()du fragment est maintenant arrêté avant l'appel deonSaveInstanceState(), reflétant le comportement du cycle de vie du fragment. Ce correctif a déjà été publié dans Fragment1.3.0-alpha04. (b/154645875) - L'appel de
setMenuVisibility(false)sur un fragment modifie désormais correctement la visibilité des menus fournis par ses fragments enfants. Ce correctif a déjà été publié dans Fragment1.3.0-alpha04. (b/153593580)
Version 1.2.4
Version 1.2.4
1er avril 2020
Publication d'androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 et androidx.fragment:fragment-testing:1.2.4. Liste des commits de la version 1.2.4
Corrections de bugs
- Mise à jour des règles ProGuard de Fragment pour permettre l'obscurcissement des fragments conservés. (b/151605338)
- Désactivation de la règle lint
FragmentLiveDataObservesur les classesDialogFragment, car leur cycle de vie et le cycle de vie de leur vue sont toujours synchronisés. Vous pouvez donc utiliserthisouviewLifecycleOwnerlors de l'appel deobserve. (b/151765086)
Version 1.2.3
Version 1.2.3
18 mars 2020
Publication d'androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 et androidx.fragment:fragment-testing:1.2.3. Liste des commits de la version 1.2.3
Corrections de bugs
- Correction d'un bug dans
DialogFragmentqui entraînait uneStackOverflowErrorlors de l'appel degetLayoutInflater()depuisonCreateDialog(). (b/117894767, aosp/1258665) - Réduction du champ d'application des règles ProGuard incluses de Fragment pour que les classes Fragment non utilisées puissent être supprimées. (b/149665169)
- Correction des faux positifs dans la vérification lint
UseRequireInsteadOfGetlors de l'utilisation d'un nom de variable locale qui occultait le nom de la propriété Kotlin. (b/149891163) FragmentContainerViewne génère plus deUnsupportedOperationExceptionlors de l'utilisation du mauvais constructeur dans l'aperçu de mise en page. (b/149707833)
Version 1.2.2
Version 1.2.2
19 février 2020
Publication d'androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 et androidx.fragment:fragment-testing:1.2.2. Liste des commits de la version 1.2.2
Nouvelles vérifications lint
- lint suggère d'utiliser le
viewLifecycleOwneren tant queLifecycleOwnerdans les appels deOnBackPressedDispatcherdansonCreateView(),onViewCreated()etonActivityCreated(). (b/142117657) - Ajout d'une vérification lint qui confirme que vous utilisez le bon
debugImplementationlorsque vous utilisez l'artefactfragment-testing. (b/141500106) - Les fragments suggèrent maintenant d'utiliser les méthodes
require___()associées pour obtenir des messages d'erreur plus descriptifs au lieu decheckNotNull(get___()),requireNonNull(get___())ouget___()!!pour toutes les API de Fragment qui incluent à la fois ungetet unrequireéquivalent. (aosp/1202883)
Corrections de bugs
- Correction des fichiers ProGuard de Fragment pour éviter les avertissements R8 (b/148963981)
- Amélioration de la vérification lint existante qui suggère d'utiliser
viewLifecycleOwnerlors de l'utilisation deobservepour gérer également la version de la méthode d'extensionobservedelivedata-ktx. (b/148996309) - Correction de la mise en forme de la plupart des vérifications lint (aosp/1157012)
Contributions externes
- Merci à Zac Sweers d'avoir participé aux vérifications lint
require___()pour le compte de Slack. (aosp/1202883)
Version 1.2.1
Version 1.2.1
5 février 2020
Publication d'androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 et androidx.fragment:fragment-testing:1.2.1. Liste des commits de la version 1.2.1
Corrections de bugs
- Le constructeur par défaut est désormais conservé par ProGuard pour les fragments ajoutés via les méthodes
addetreplacequi utilisent une instanceClass(ou les versions corrigées de Kotlin). (b/148181315) FragmentStatePagerAdapteretFragmentPagerAdapterne détectent plus les exceptions générées parFragmentManagerlors de l'exécution definishUpdate(). (aosp/1208711)- Correction d'un problème pour lequel
FragmentManager.findFragment()ne fonctionnait pas avec les fragments ajoutés via la balise<fragment>. (b/147784323) - Désormais, les fragments gonflés à l'aide de la balise
<fragment>reçoivent toujours un appel àonInflate()avantonCreate()dans la mise en page. (aosp/1215856) - L'appel de
toString()sur une instanceFragmentManagerne génère plus deNullPointerExceptionlorsque l'activité est déjà détruite. (b/148189412)
Modifications de la dépendance
- Fragments
1.2.1dépend désormais de Lifecycle ViewModel SavedState2.2.0.
Version 1.2.0
Version 1.2.0
22 janvier 2020
Publication d'androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 et androidx.fragment:fragment-testing:1.2.0. Liste des commits de la version 1.2.0
Changements importants depuis la version 1.1.0
- FragmentContainerView :
FragmentContainerViewest le conteneur fortement recommandé pour les fragments ajoutés de façon dynamique. Il remplace l'utilisation deFrameLayoutou d'autres mises en page. Il accepte aussi la mêmeclass, le mêmeandroid:nameet le mêmeandroid:tagfacultatif que la balise<fragment>, mais utilise uneFragmentTransactionnormale pour ajouter ce fragment initial, au lieu du chemin de code personnalisé utilisé par<fragment>. - Délai de
onDestroyView(): les fragments attendent maintenant la fin des animations de sortie, des transitions de framework de sortie et des transitions AndroidX (lorsque vous utilisez Transition1.3.0) avant d'appeleronDestroyView() add()etreplace()basés sur les classes : ajout de nouvelles surcharges deadd()etreplace()surFragmentTransaction, qui prennent uneClass<? extends Fragment>et unBundlefacultatif d'arguments. Ces méthodes utilisent votreFragmentFactorypour construire une instance du fragment à ajouter. Des extensions Kotlin qui utilisent des types réifiés (fragmentTransaction.replace<YourFragment>(R.id.container), par exemple) ont également été ajoutées àfragment-ktx.- Intégration de Lifecycle ViewModel SavedState :
SavedStateViewModelFactoryest désormais la fabrique par défaut utilisée lorsque vous utilisezby viewModels(),by activityViewModels(), le constructeurViewModelProviderouViewModelProviders.of()avec un fragment. - Nouvelles vérifications lint : ajout d'une nouvelle vérification lint qui garantit que vous utilisez
getViewLifecycleOwner()lorsque vous observezLiveDatadepuisonCreateView(),onViewCreated()ouonActivityCreated(). - Abandon de
getFragmentManager(): les méthodesgetFragmentManager()etrequireFragmentManager()sur Fragment ont été abandonnées et remplacées par une seule méthodegetParentFragmentManager(), qui renvoie leFragmentManagernon nul auquel le fragment est ajouté (vous pouvez utiliserisAdded()pour déterminer s'il peut être appelé de manière sécurisée). - Abandon de
FragmentManager.enableDebugLogging(): la méthode statiqueFragmentManager.enableDebugLogginga été abandonnée. FragmentManager respecte désormaisLog.isLoggable()pour la baliseFragmentManager, ce qui vous permet d'activer la journalisationDEBUGouVERBOSEsans recompiler votre application.
Problèmes connus
- Les fragments référencés uniquement via l'attribut
classouandroid:namesur uneFragmentContainerViewne sont pas automatiquement conservés par ProGuard. Vous devez donc ajouter manuellement une règle de conservation pour chaque classe de fragment. (b/142601969) - Lorsque vous ajoutez un
NavHostFragmentà l'aide declassouandroid:nameen XML avecFragmentContainerView, vous ne pouvez pas utiliserfindNavController()dansonCreate()de votre activité. (b/142847973)
Version 1.2.0-rc05
8 janvier 2020
Publication d'androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 et androidx.fragment:fragment-testing:1.2.0-rc05. Liste des commits de la version 1.2.0-rc05
Corrections de bugs
- Correction d'une régression dans Fragment
1.2.0-rc04lors de l'utilisation de la balise<fragment>, qui provoquait un appel incorrect deonViewCreated()lors de la destruction de l'activité. (b/146290333) - Désormais, la non-configuration des fragments ajoutés avec la balise
<fragment>est effacée même s'ils n'apparaissent que parfois dans la mise en page (par exemple, uniquement en mode Paysage). Par conséquent, ces fragments sont désormais correctement déplacés versCREATED, même s'ils ne figurent pas dans votre mise en page, au lieu d'être instanciés et de ne jamais passer par aucune méthode de cycle de vie. (b/145769287)
Version 1.2.0-rc04
18 décembre 2019
Publication d'androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 et androidx.fragment:fragment-testing:1.2.0-rc04. Liste des commits de la version 1.2.0-rc04
Corrections de bugs
- Ajustement des animations de
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEetTRANSIT_FRAGMENT_FADEpour éviter les problèmes visuels. (b/145468417)
Version 1.2.0-rc03
4 décembre 2019
Publication d'androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 et androidx.fragment:fragment-testing:1.2.0-rc03. Liste des commits de la version 1.2.0-rc03
Corrections de bugs
- Modification d'un changement de comportement involontaire : les fragments supprimés étaient toujours renvoyés par
findFragmentById()/findFragmentByTag()pendant l'exécution des transitions et animations de sortie. (b/143982969, aosp/1167585) - Les fragments enfants sont maintenant correctement arrêtés avant leurs parents lorsque l'activité contenante appelle
onSaveInstanceState(). (b/144380645) - Correction d'un problème pour lequel des vues étaient marquées comme
INVISIBLEpar erreur après l'affichage d'un fragment masqué. (b/70793925) - Les transitions d'éléments partagés de fragment gèrent désormais les vues ayant fait l'objet d'une rotation, d'une mise à l'échelle, etc. (b/142835261)
Mises à jour de la documentation
- Clarification de
setUserVisibleHint()dans la documentation concernant les fonctionnalités abandonnées. (b/143897055) - Amélioration de la documentation concernant
setFragmentFactory()etgetFragmentFactory()pour indiquer plus clairement que la définition d'uneFragmentFactoryaffecte également les FragmentManagers enfants. (aosp/1170095)
Modifications de la dépendance
- Fragments dépend désormais de Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03et Activity1.1.0-rc03.
Version 1.2.0-rc02
7 novembre 2019
Publication d'androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 et androidx.fragment:fragment-testing:1.2.0-rc02. Liste des commits de la version 1.2.0-rc02
Corrections de bugs
- En Kotlin, le LintFix pour l'utilisation de
getViewLifecycleOwner()lors de l'observation deLiveDataà partir deonCreateView(),onViewCreated()ouonActivityCreated()(introduit dans Fragment1.2.0-rc01) utilise désormais la syntaxe d'accès aux propriétés KotlinviewLifecycleOwnerau lieu degetViewLifecycleOwner(). (aosp/1143821)
Version 1.2.0-rc01
23 octobre 2019
Publication d'androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 et androidx.fragment:fragment-testing:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01
Nouvelles fonctionnalités
FragmentContainerViewaccepte désormais l'attributclassen plus deandroid:name, reflétant ainsi la fonctionnalité de la balise<fragment>. (b/142722242)- Ajout d'une nouvelle vérification lint qui garantit que vous utilisez
getViewLifecycleOwner()lorsque vous observezLiveDatadepuisonCreateView(),onViewCreated()ouonActivityCreated(). (b/137122478)
Corrections de bugs
- Les rappels
onDismissetonCancelsurDialogFragmentgarantissent désormais que laDialogInterfacequi leur est transmise est non nulle et quegetDialog()renvoie une valeur non nulle lors de leur exécution. (b/141974033) FragmentContainerViewajoute maintenant le fragment défini parclassouandroid:namepour le gonflement, afin quefindFragmentById()etfindFragmentByTag()fonctionnent immédiatement après. (b/142520327)- Correction d'une
IllegalStateExceptiondansFragmentContainerViewen raison de l'enregistrement de l'état. (b/142580713) - Correction d'une
UnsupportedOperationExceptiondansFragmentContainerViewlorsque la classeFragmentContainerViewest obscurcie. (b/142657034)
Problèmes connus
- Les fragments référencés uniquement via l'attribut
classouandroid:namesur uneFragmentContainerViewne sont pas automatiquement conservés par ProGuard. Vous devez donc ajouter manuellement une règle de conservation pour chaque classe de fragment. Nous avons désactivé la règle lint suggérant de passer àFragmentContainerViewjusqu'à la résolution du problème viaaapt2. (b/142601969)
Version 1.2.0-beta02
11 octobre 2019
Publication d'androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 et androidx.fragment:fragment-testing:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02
Corrections de bugs
- Correction d'un problème en raison duquel la méthode
onInflate()de Fragment ne recevait pas les attributs appropriés de la part deFragmentContainerView, ce qui empêchait par exemple d'utiliserNavHostFragment. (b/142421837)
Version 1.2.0-beta01
9 octobre 2019
Publication d'androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 et androidx.fragment:fragment-testing:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01
Nouvelles fonctionnalités
FragmentContainerViewpermet d'ajouter un fragment initial avec une prise en charge supplémentaire pour l'attribut XMLandroid:nameet l'attribut XML facultatifandroid:tag. Contrairement à la balise<fragment>,FragmentContainerViewutilise uneFragmentTransactionstandard en arrière-plan pour ajouter le fragment initial, ce qui permet d'effectuer d'autres opérationsFragmentTransactionsur laFragmentContainerViewet permet d'utiliser la liaison de vue pour la mise en page. (b/139830628, b/141177981)- Fragments contient désormais un avertissement lint offrant une solution rapide pour remplacer
<fragment>parFragmentContainerView. (b/139830056)
Corrections de bugs
- Correction d'une
ClassCastExceptionlors de l'utilisation d'androidx.transition. (b/140680619) - Lorsque vous utilisez Transition
1.3.0-beta01, les fragments attendent désormais la fin des transitionsandroidx.transition(en plus des animations et des transitions de framework, qui ont été corrigées respectivement dans Fragment1.2.0-alpha03et Fragment1.2.0-alpha02) avant de déclencheronDestroyView(). (aosp/1119841) - Lorsque vous utilisez Transition
1.3.0-beta01, les fragments annulent désormais correctement les transitionsandroidx.transitionavant de lancer de nouvelles transitions/animations sur le même conteneur. (aosp/1119841) - Correction d'un problème sur l'API 17 et versions antérieures lors de l'utilisation de transitions
androidx.transitionsur la vue racine de votre fragment avecFragmentContainerView. (b/140361893) - L'artefact
fragment-testingdépend désormais d'AndroidX Test1.2.0, ce qui corrige une incompatibilité avec la dernière version d'Espresso 3.2.0. (b/139100149) - Suppression de l'utilisation de
Log.wdans FragmentManager. (aosp/1126468)
Problèmes connus
- La méthode
onInflate()de Fragment ne reçoit pas les attributs appropriés de la part deFragmentContainerView, ce qui empêche par exemple d'utiliserNavHostFragment. (b/142421837)
Version 1.2.0-alpha04
18 septembre 2019
Publication d'androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 et androidx.fragment:fragment-testing:1.2.0-alpha04. Liste des commits de la version 1.2.0-alpha04
Modifications apportées à l'API
- Les méthodes
getFragmentManager()etrequireFragmentManager()surFragmentont été abandonnées et remplacées par une seule méthodegetParentFragmentManager(), qui renvoie leFragmentManagernon nul auquel le fragment est ajouté (vous pouvez utiliserisAdded()pour déterminer si vous pouvez l'appeler de manière sécurisée). (b/140574496) - La méthode statique
FragmentManager.enableDebugLogginga été abandonnée. FragmentManager respecte désormaisLog.isLoggable()pour la baliseFragmentManager, ce qui vous permet d'activer la journalisationDEBUGouVERBOSEsans recompiler votre application. (aosp/1116591)
Corrections de bugs
- Désormais, les fragments sont correctement détruits lorsque les animations de sortie d'autres fragments sont en cours d'exécution. (b/140574199)
- Correction d'un problème pour lequel Fragments appelait
Activity.findViewById()alors qu'il ne le faisait pas auparavant. (aosp/1116431)
Version 1.2.0-alpha03
5 septembre 2019
Publication d'androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 et androidx.fragment:fragment-testing:1.2.0-alpha03. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications apportées à l'API
FragmentContainerViewest désormaisfinal. (b/140133091)
Corrections de bugs
FragmentContainerViewinverse désormais correctement l'ordre de dessin lorsque vous faites apparaître des fragments depuis la pile "Retour". (b/139104187)- Correction d'un problème qui entraînait l'exécution d'une animation incorrecte lors de l'affichage d'un fragment et de l'ajout d'un nouveau fragment en même temps. (b/111659726)
- Les fragments attendent désormais la fin des transitions (en plus des animations, ce qui a été corrigé dans Fragment
1.2.0-alpha02) avant de déclencheronDestroyView(). (b/138741697)
Version 1.2.0-alpha02
7 août 2019
Publication d'androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 et androidx.fragment:fragment-testing:11.2.0-alpha02. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
SavedStateViewModelFactoryest désormais la fabrique par défaut utilisée lorsque vous utilisezby viewModels(),by activityViewModels(), le constructeurViewModelProviderouViewModelProviders.of()avec unFragment. (b/135716331)- Les animations par défaut lorsque vous utilisez
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEetTRANSIT_FRAGMENT_FADEavecsetTransitionsur unFragmentTransactionont été mises à jour pour correspondre aux animations utilisées par les activités sur les appareils Android 10. (aosp/1012812, aosp/1014730)
Modifications apportées à l'API
- Présente
FragmentContainerViewcomme le conteneur fortement recommandé pour les fragments ajoutés de façon dynamique. Il remplace l'utilisation deFrameLayout, car il corrige les problèmes d'ordre de plan d'animation et d'encarts de fenêtre distribués à Fragments. (b/37036000, aosp/985243, b/136494650) - Ajout d'une méthode statique
FragmentManager.findFragment(View)pour récupérer le fragment contenant à partir d'une vue gonflée par un fragment. Une extension Kotlin est également disponible dansfragment-ktx. (aosp/1090757) - Ajout de nouvelles surcharges pour
add()etreplace()surFragmentTransaction, qui acceptent uneClass<? extends Fragment>et unBundlefacultatif d'arguments. Ces méthodes utilisent votreFragmentFactorypour construire une instance du fragment à ajouter. Des extensions Kotlin qui utilisent des types réifiés (fragmentTransaction.replace<YourFragment>(R.id.container), par exemple) ont également été ajoutées àfragment-ktx. (b/126124987) - Des annotations
@MainThreadont été ajoutées aux rappels de cycle de vie deFragment. (b/127272564) - Les API liées au titre du fil d'Ariane sur
FragmentTransactionetFragmentManager.BackStackEntryont été abandonnées. (b/138252944) - La méthode
setTransitionStylesurFragmentTransactiona été abandonnée. (aosp/1011537) - Un grand nombre des méthodes dans
FragmentManagerne sont plusabstract.FragmentManagerlui-même resteabstractet ne doit pas être directement instancié ni étendu. Vous ne devriez poursuivre que pour obtenir une instance existante degetSupportFragmentManager(),getChildFragmentManager(), etc.
Corrections de bugs
- Depuis Fragment
1.1.0-rc04: les fragments annulent désormais correctement les transitions reportées sur les fragments qui ont été affichés. (b/138251858) - Depuis Fragment
1.1.0-rc03: correction d'un problème pour lequel l'appel depostponeEnterTransition()plusieurs fois avec un délai avant expiration n'annulait pas les délais avant expiration précédents. (b/137797118) - Depuis Fragment
1.1.0-rc02: correction du plantage dansFragmentPagerAdapteretFragmentStatePagerAdapterlors de la suppression de l'élément actuel. (b/137209870) - Les fragments attendent désormais la fin des animations avant de déclencher
onDestroyView(). (b/136110528) - Les animations de fragment issues des fragments enfants et de leurs descendants sont désormais correctement gérées lors de l'animation du fragment parent. (b/116675313)
- Correction d'une
NullPointerExceptionlors de l'utilisation de transitions d'éléments partagés et de la combinaison d'une opération d'affichage et d'ajout. (b/120507394) - Ajout d'une solution de contournement aux
IllegalStateExceptions lors de l'utilisation deFragmentPagerAdapteretFragmentStatePagerAdapterdans des tests Robolectric. (b/137201343)
Version 1.2.0-alpha01
2 juillet 2019
Publication d'androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 et androidx.fragment:fragment-testing:1.2.0-alpha01. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- FragmentManager appelle désormais
requestApplyInsets()après avoir associé la vue du fragment et directement avant d'appeleronViewCreated(), garantissant ainsi que la vue dispose toujours des encarts corrects. (b/135945162)
Corrections de bugs
- Correction d'une
NullPointerExceptionlors de l'affichage d'uneFragmentTransactionutilisantsetPrimaryNavigationFragment()avantreplace(). (b/134673465)
Version 1.1.0
Version 1.1.0
5 septembre 2019
Publication d'androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 et androidx.fragment:fragment-testing:1.1.0. Les commits inclus dans cette version sont disponibles sur cette page.
Changements importants depuis la version 1.0.0
- fragment-testing : l'artefact
fragment-testingfournit une classeFragmentScenariopermettant de tester un fragment de façon isolée. Pour en savoir plus, consultez la documentation sur le test des fragments de votre application. - FragmentFactory : vous pouvez désormais définir une
FragmentFactorysur unFragmentManagerpour gérer la création d'instances de fragment, en supprimant l'exigence stricte de disposer d'un constructeur sans argument. - Délégués de propriété Kotlin pour ViewModels : l'artefact
fragment-ktxcontient désormais deux délégués de propriété Kotlin :by viewModels()pour accéder aux ViewModels associés au fragment individuel etby activityViewModels()pour accéder aux ViewModels limités à l'activité. - Cycle de vie maximal : vous pouvez désormais définir un état de cycle de vie maximal pour un fragment en appelant
setMaxLifecycle()sur uneFragmentTransaction. Cela remplacesetUserVisibleHint(), désormais obsolète.FragmentPagerAdapteretFragmentStatePagerAdapterdisposent d'un nouveau constructeur qui vous permet de passer au nouveau comportement. - Constructeur FragmentActivity LayoutId : les sous-classes de
FragmentActivitypeuvent désormais appeler facultativement un constructeur surFragmentActivityqui accepte un IDR.layout, indiquant la mise en page à définir en tant que vue de contenu, comme alternative à l'appel desetContentView()dansonCreate(). Cela ne change pas l'obligation pour votre sous-classe d'avoir un constructeur sans argument. - Constructeur Fragment LayoutId : les sous-classes de
Fragmentpeuvent désormais appeler facultativement un constructeur surFragmentqui accepte un IDR.layout, indiquant la mise en page à utiliser pour ce fragment comme alternative au remplacement deonCreateView(). Vous pouvez configurer la mise en page gonflée dansonViewCreated(). - Report avec un délai avant expiration : une nouvelle surcharge de
postponeEnterTransition()a été ajoutée et accepte un délai avant expiration.
Version 1.1.0-rc04
7 août 2019
Publication d'androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 et androidx.fragment:fragment-testing:1.1.0-rc04. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Les fragments annulent désormais correctement les transitions reportées sur les fragments qui ont été affichés. (b/138251858)
Version 1.1.0-rc03
19 juillet 2019
Publication d'androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 et androidx.fragment:fragment-testing:1.1.0-rc03. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Correction d'un problème pour lequel l'appel de
postponeEnterTransition()plusieurs fois avec un délai avant expiration n'annulait pas les délais avant expiration précédents. (b/137797118)
Version 1.1.0-rc02
17 juillet 2019
Publication d'androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 et androidx.fragment-testing:fragment:1.1.0-rc02. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Correction d'un plantage dans
FragmentPagerAdapteretFragmentStatePagerAdapterlors de la suppression de l'élément actuel. (b/137209870)
Version 1.1.0-rc01
2 juillet 2019
Publication d'androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 et androidx.fragment:fragment-testing:1.1.0-rc01. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Désormais, les fragments mettent correctement à jour leur visibilité lors de l'utilisation d'opérations
show()ouhide()alors que la transition est exécutée. (b/133385058) - Correction d'une
NullPointerExceptionlors de l'affichage d'uneFragmentTransactionutilisantsetPrimaryNavigationFragment()avantreplace(). (b/134673465)
Version 1.1.0-beta01
5 juin 2019
Publication d'androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 et androidx.fragment:fragment-testing:1.1.0-beta01. Les commits inclus dans cette version sont disponibles sur cette page.
Corrections de bugs
- Les rappels
androidx.lifecycle.Lifecycle(spécifiquement liés àSTARTED,RESUMED,PAUSED,STOPPEDetDESTROYED) pour les fragments imbriqués sont désormais correctement imbriqués. (b/133497591) - Les instances
OnBackPressedCallbackenregistrées dans leonCreate()d'un fragment ont désormais correctement priorité sur le FragmentManager enfant. (b/133175997) - Les fragments enfants ne sont plus animés lorsque leur fragment parent est remplacé. (b/121017790)
- Les animations et les transitions de fragment sont désormais ignorées lors de l'utilisation de
animateLayoutChanges="true", ce qui corrige un problème de destruction des fragments. (b/116257087)
Version 1.1.0-alpha09
16 mai 2019
Publication d'androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 et androidx.fragment:fragment-testing:1.1.0-alpha09. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications apportées à l'API
- Les fragments reçoivent maintenant un rappel vers une nouvelle méthode
onPrimaryNavigationFragmentChanged(boolean)lorsque le fragment de navigation principal change. aosp/960857
Corrections de bugs
- Les éléments de menu gonflés par un fragment enfant sont désormais correctement supprimés lorsque le fragment parent est supprimé. b/131581013
Version 1.1.0-alpha08
7 mai 2019
Publication d'androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 et androidx.fragment:fragment-testing:1.1.0-alpha08. Les commits inclus dans cette version sont disponibles sur cette page.
Cette version n'est pas compatible avec Preferences 1.1.0-alpha01 à 1.1.0-alpha04. Veuillez passer à Preferences 1.1.0-alpha05 lorsque vous utilisez cette version de Fragments.
Nouvelles fonctionnalités
- Ajout d'une surcharge associée à
postponeEnterTransition(), qui accepte un délai avant expiration, au bout duquel le fragment appelle automatiquementstartPostponedEnterTransition()b/120803208
Modifications apportées à l'API
- Modification destructive : la méthode
FragmentFactoryinstantiatequi a été précédemment abandonnée et qui acceptait unBundlea été supprimée. aosp/953856 - Modification destructive : les constantes
RESUME_ONLY_CURRENT_FRAGMENTetUSE_SET_USER_VISIBLE_HINTdansFragmentPagerAdapteretFragmentStatePagerAdapteront été renommées respectivement enBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTetBEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782
Corrections de bugs
- Les fragments dont le cycle de vie était limité via
setMaxLifecycle()ne sont plus réactivés avant d'atteindre leur état final. b/131557151 - Lorsque vous utilisez
setMaxLifecycle(Lifecycle.State.CREATED), la vue des fragments est correctement détruite. aosp/954180
Version 1.1.0-alpha07
25 avril 2019
Publication d'androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 et androidx.fragment:fragment-testing:1.1.0-alpha07. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Vous pouvez désormais définir un état de cycle de vie maximal pour un fragment en appelant
setMaxLifecycle()sur uneFragmentTransaction. Cela remplacesetUserVisibleHint(), désormais obsolète.FragmentPagerAdapteretFragmentStatePagerAdapterdisposent d'un nouveau constructeur qui vous permet de passer au nouveau comportement. (b/129780800)
Modifications apportées à l'API
moveToState(STARTED)surFragmentScenarione peut désormais être appelé que sur les appareils utilisant l'API 24 ou une version ultérieure. (b/129880016)
Nouveaux comportements
- En raison de (b/129907905), les fragments de la pile "Retour" n'obtiendront pas un rappel à
onCreateView()lorsque l'activité d'hébergement est recréée.onCreateView()est désormais appelé uniquement lorsque le fragment devient visible (c.-à-d. que la pile "Retour" est affichée).
Corrections de bugs
- Correction d'un problème lors de l'utilisation d'une balise
<fragment>en XML et du constructeurcontentLayoutIddeFragmentActivityouAppCompatActivity. (b/129907905) - Correction d'un problème en raison duquel des fragments de la pile "Retour" n'étaient pas déplacés au moins jusqu'à l'état
CREATEDaprès une modification de configuration, ce qui empêchait la bonne suppression des ViewModels et des fragments enfants conservés. (b/129593351) - Correction d'un plantage de
restoreSaveStatecausé par une désynchronisation des fragments conservés après l'enregistrement de l'état de l'instance. (b/130433793) (aosp/947824) - Correction de problèmes pour lesquels un
OnBackPressedCallbackajouté avec un cycle de vie de fragment n'était pas appelés si leFragmentManagerdisposait d'une pile "Retour". Pour plus d'informations, consultez androidx.activity 1.0.0-alpha07. (aosp/948209) - Les fragments ne forcent plus l'application de
LAYER_TYPE_HARDWAREpour les animations. Si vous avez besoin d'une animation de couche matérielle, veuillez l'intégrer dans votre animation. (b/129486478)
Version 1.1.0-alpha06
3 avril 2019
Publication d'androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 et androidx.fragment:fragment-testing:1.1.0-alpha06. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Les exceptions générées par FragmentManager incluent désormais le nom du fragment dans le message. (b/67759402)
Modifications apportées à l'API
FragmentetFragmentActivitycontiennent désormais un deuxième constructeur qui accepte un@LayoutRes intet qui remplace le comportement précédent d'annotation de votre classe par@ContentView. Cette approche fonctionne dans les modules d'application et de bibliothèque. (b/128352521)- Le champ
onActivityResult()de FragmentActivity est désormais correctement marqué comme@CallSuper. (b/127971684) - La méthode
instantiatede FragmentFactory qui accepte un lot d'arguments a été abandonnée, et les applications doivent utiliser la nouvelle surchargeinstantiatequi n'accepte pas de lot. (b/128836103) - Les méthodes
FragmentScenariosont désormais correctement annotées avec@StyleRes. (aosp/924193) FragmentTabHostest maintenant obsolète. (b/127971835)- L'élément
getThemedContext()de FragmentActivity a été supprimé. (aosp/934078)
Corrections de bugs
- Correction d'une régression dans la version 1.1.0-alpha05 qui entraînait le clignotement du fragment entrant à l'écran. (b/129405432)
- Correction d'un problème pour lequel le fragment de navigation principal était perdu après une série d'opérations popBackStack+replace+popBackStack. (b/124332597)
- Correction d'un problème lié à l'utilisation de constructeurs
@ContentViewsur votre activité lors de la restauration de l'état de fragment. (b/127313094) - Correction de la logique de
setTargetFragment()lors du remplacement d'un fragment cible existant par un fragment qui n'était pas encore associé à FragmentManager. (aosp/932156)
Version 1.1.0-alpha05
13 mars 2019
Publication d'androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 et androidx.fragment:fragment-testing:1.1.0-alpha05. La liste complète des commits inclus dans cette version est disponible sur cette page.
Nouvelles fonctionnalités
- Les recherches d'annotations de
@ContentViewsont désormais mises en cache. (b/123709449)
Nouveaux comportements
- L'appel de
remove(),hide(),show(),detach()etsetPrimaryNavigationFragment()avec un fragment associé à un autre FragmentManager génère désormais uneIllegalStateExceptionplutôt qu'un échec silencieux (aosp/904301)
Corrections de bugs
onNewIntentpourFragmentActivityest maintenant correctement marqué avec@CallSuper(b/124120586)- Correction d'un problème pour lequel la méthode
onDismiss()deDialogFragmentpouvait être appelée deux fois lors de l'utilisation degetDialog().dismiss()ougetDialog().cancel()(b/126563750).
Version 1.1.0-alpha04
7 février 2019
Publication d'androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 et androidx.fragment:fragment-testing 1.1.0-alpha04.
Nouvelles fonctionnalités
- Ajout de la prise en charge de l'annotation de classe
@ContentView, qui vous permet d'indiquer le fichier XML de mise en page à gonfler au lieu de remplaceronCreateView(). Nous vous recommandons de consulter les tâches associées à la vue dansonViewCreated(). (aosp/837619) fragment-testingdépend désormais deandroidx.test:core-ktx1.1.0 stable (b/121209673)- Vous pouvez désormais utiliser
openActionBarOverflowOrOptionsMenuavecFragmentScenariopour tester les menus d'options hébergés par Fragment (b/121126668).
Modifications apportées à l'API
- Ajout d'une méthode
requireArguments()qui renvoie un@NonNull Bundleou génère uneIllegalStateException(b/121196360) - Ajout d'une remarque indiquant que les méthodes
getLifecycle(),getViewLifecycleOwner()etgetViewLifecycleOwnerLiveData()ne doivent pas être remplacées et deviendront finales dans une prochaine version. Veuillez envoyer une demande de fonctionnalité si vous remplacez actuellement cette méthode. (aosp/880714) - Ajout d'une remarque indiquant que la méthode
getViewModelStore()ne doit pas être remplacée et deviendra finale dans une prochaine version. Veuillez envoyer une demande de fonctionnalité si vous remplacez actuellement cette méthode. (aosp/880713) - Correction d'un problème de compatibilité binaire avec les versions précédentes de Fragments. (aosp/887877) (aosp/889834)
Corrections de bugs
- Les fragments cibles sont correctement effacés lorsque vous transmettez
nullàsetTargetFragment(). (aosp/849969) - Correction d'un problème pour lequel des fragments cibles étaient parfois indisponibles dans ou après
onDestroy(). (b/122312935) - La méthode onDismiss() de DialogFragment est maintenant appelée avant
onDestroy(). (aosp/874133) (aosp/890734)
Version 1.1.0-alpha03
17 décembre 2018
Nouvelles fonctionnalités
- Fragment implémente désormais
BundleSavedStateRegistryOwneret dépend de la bibliothèque SavedState nouvellement publiée [aosp/824380] - Un délégué de propriété Kotlin
by activityViewModelsa été ajouté pour récupérer les ViewModels associés à l'activité contenante [b/119050253] - Le délégué de propriété Kotlin
by viewModelsa été étendu pour intégrer une méthode lambda facultative permettant d'obtenir leViewModelStoreOwner, ce qui vous permet de transmettre le fragment parent ou un autreViewModelStoreOwnerpersonnalisé avec du code tel queval viewModel: MyViewModel by viewModels(::requireParentFragment)[b/119050253]
Modifications apportées à l'API
FragmentScenariovous permet désormais de spécifier un thème tel queTheme.AppCompat[b/119054431]. Il s'agit d'une modification destructive.- Ajout d'une méthode
requireView()qui renvoie une@NonNull Viewou génère uneIllegalStateException[b/120241368] - Ajout d'une méthode
requireParentFragment()qui renvoie un@NonNull Fragmentou génère uneIllegalStateException[b/112103783]
Corrections de bugs
- Correction d'une IllegalStateException : échec de l'enregistrement de l'état b/120814739
- Désormais, les fragments restaurés à partir de l'état d'instance enregistré reçoivent toujours un
Bundlenon nul [b/119794496] - Les fragments supprimés ne réutilisent plus leur objet
Lifecycles'ils sont de nouveau ajoutés [b/118880674]
Version 1.1.0-alpha02
3 décembre 2018
Nouvelles fonctionnalités
- Les extensions Kotlin de FragmentScenario vous permettent désormais d'utiliser un lambda pour la construction de fragments au lieu de transmettre une instance
FragmentFactory. (aosp/812913)
Corrections de bugs
- Correction d'une IllegalStateException lors de l'utilisation de fragments imbriqués dans la pile "Retour" (b/119256498)
- Correction du plantage lors de l'utilisation de
FragmentScenario.recreate()avec uneFragmentFactory(aosp/820540) - Correction d'un problème qui empêchait les fragments cibles d'être accessibles après la suppression du fragment (aosp/807634)
Version 1.1.0-alpha01
5 novembre 2018
Il s'agit de la première version de l'artefact fragment-testing et de FragmentScenario, basés sur les API androidx.test:core. Pour en savoir plus, consultez la documentation sur les tests de fragment.
Nouvelles fonctionnalités
- Nouvelle classe FragmentScenario pour tester des fragments de manière isolée.
- Vous pouvez maintenant définir une
FragmentFactorysur n'importe quelFragmentManagerpour contrôler la façon dont les nouvelles instances de fragment sont instanciées. - Ajout d'un délégué de propriété Kotlin
by viewModels()pour récupérer les ViewModels à partir d'un fragment. - Les événements d'entrée en attente (tels que les clics) sont maintenant annulés dans la méthode
onStop()d'un fragment.
Modifications apportées à l'API
- Développement important des annotations de possibilité de valeur nulle sur la surface de l'API Fragment.
Corrections de bugs
- Correction d'un problème qui entraînait l'échec des opérations de fragment au sein de LiveData (b/77944637)
Problèmes connus
- Les fragments cibles ne sont plus accessibles après la suppression d'un fragment de FragmentManager.
fragment-testingdépend d'androidx.test:core:1.0.0-beta01au lieu de la version correcteandroidx.test:core:1.0.0.