Fragment
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
30 octobre 2024 | 1.8.5 | - | - | - |
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.5" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.5" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
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.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
IllegalStateException
déclenché parsaveBackStack
uniquement après l'annulation ou l'interruption d'un geste Retour prédictif. (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 de transitions Androidx lorsque l'utilisateur appuie rapidement sur le bouton Retour du système ou effectue un geste de 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 pouvait même afficher le mauvais fragment. (If82e2, b/338624457)
- Correction d'une
UninitializedPropertyAccessException
dansAndroidFragment
lors 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
FragmentManager
prend désormais correctement en compte les opérations en attente lors de la gestion du geste de prévisualisation du Retour. Cela devrait vous assurer qu'un retour système ne provoque plus d'IndexOutOfBoundsException
. (I9ba32, b/342316801).AndroidFragment
ne plante plus s'il est ajouté à la composition alors que l'état de l'activité/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
AndroidFragment
gère désormais correctement les cas où le fragment parent est placé sur la pile "Retour" du fragment, ce qui évite les problèmes de type "Aucune vue trouvée pour l'ID" lorsque vous revenez à ce fragment. (I94608).- Les fragments ajoutés via la méthode
FragmentTransaction.add
qui utilise unViewGroup
attendent désormaisonContainerAvailable
avant de passer àonStart()
. Cela affecte les utilisateurs de cette API, commeAndroidFragment
, qui attend désormais que leAndroidFragment
réintroduise la composition avant de le déplacer viaonStart()
. (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
DESTROYED
au démarrage d'un geste Retour prédictif. Ils sont maintenant maintenus dans l'étatCREATED
jusqu'à 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-compose
contient désormais unComposable
AndroidFragment
qui permet d'ajouter des fragments à la hiérarchie Compose via le nom de la classe du fragment. Il gère automatiquement l'enregistrement et la restauration de l'état du fragment. Cette approche doit remplacer directement l'approche précédemment recommandée consistant à utiliserAndroidViewBinding
pour gonfler un fragment. - Le rappel
onBackStackChangeCancelled
sur l'interfaceOnBackStackChangedListener
deFragmentManager
se déclenche désormais lors de l'exécution d'opérations dansFragmentManager
, ce qui le rapproche du calendrier 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
onBackStackChangeCancelled
sur l'interfaceFragmentManagers OnBackStackChangedListener
se déclenche désormais lors de l'exécution d'opérations dansFragmentManager
, ce qui le rapproche du calendrier 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 comportent un animateur ou une transition AndroidX pouvant être recherchée. Cela corrige un problème qui entraînait l'affichage d'un écran noir lors de l'annulation d'une transaction partiellement accessible. (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 l'exécution échoue lorsque vous définissez unsharedElement
sans aucune autre transition. (Iec48e) - Depuis Fragment
1.7.0-rc02
: correction d'un bug qui entraînait un plantage si un élément partagé non accessible était ajouté à une transaction où toutes les autres transitions étaient accessibles. La transaction sera désormais considérée comme non accessible. (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
- La nouvelle
AndroidFragment
Composable
permet d'ajouter des fragments à la hiérarchie Compose via le nom de la classe de fragment. Il gère automatiquement l'enregistrement et la restauration de l'état du fragment. Il peut être utilisé comme remplacement direct deComposable
AndroidViewBinding.(b/312895363, Icf841)
Modifications de la documentation
- Mise à jour de la documentation des API
OnBackStackChangedListener
pour 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écute désormais que pour les transactions dans lesquelles tous les fragments comportent un animateur ou une transition Androidx pouvant être recherchée. Cela corrige un problème qui entraînait un écran vide lors de l'annulation d'une transaction partiellement accessible. (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
Animator
ou la transition AndroidX 1.5.0. Cela permet aux utilisateurs d'utiliser le geste Retour pour voir le fragment précédent en recherchant votre animateur/transition avant de décider de valider la transaction en effectuant le geste ou en annulant.
Système de transition | Ressource XML | Compatible avec 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 de compatibilité avec la prévisualisation du Retour dans les fragments après avoir activé le geste de prévisualisation du Retour, 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 à l'aide de 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 Compose de fragment
Un nouvel artefact fragment-compose
a été créé pour prendre en charge les applications qui passent 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 l'exécution échoue lorsque vous définissez un
sharedElement
sans aucune autre transition. (Iec48e). - Correction d'un bug qui entraînait un plantage si un élément partagé non accessible était ajouté à une transaction où toutes les autres transitions étaient accessibles. La transaction sera désormais considérée comme non accessible. (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
FragmentHostCallback
est maintenant écrit en Kotlin. Ainsi, la possibilité de valeur nulle du type générique de l'hôte correspond à celle du type renvoyé deonGetHost()
. (I40af5)
Correction de bugs
- Correction d'un problème qui empêchait la destruction d'un fragment lors de l'exécution d'un geste "Retour" prédictif sur un fragment qui ne se trouve pas dans un conteneur. Le fragment passe maintenant immédiatement à l'état final. (Ida0d9)
- Correction d'un problème dans les fragments qui faisait que l'interruption des transitions entrantes avec un geste de prévisualisation du Retour 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 de la version précédente de Fragment. Lorsque la prévisualisation du Retour était utilisée pour
Animator
ou la transition AndroidX, Fragments générait uneNullPointerException
à partir dehandleOnBackProgressed
si aucunFragmentManager.OnBackStackChangedListener
n'avait é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 Compose de fragment
Un nouvel artefact fragment-compose
a été créé pour prendre en charge les applications qui passent 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 de Fragment pour
Animator
ou la transition AndroidX, Fragments génère uneNullPointerException
à partir dehandleOnBackProgressed
si aucunFragmentManager.OnBackStackChangedListener
n'a jamais été ajouté viaaddOnBackStackChangedListener
. Ajouter manuellement 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 du correctif pour la bibliothèque de transitions, qui a été corrigé 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
NullPointerException
causée par la définition d'une transition d'élément partagé et l'échec de la définition d'une transition d'entrée/de sortie. (I8472b). - Depuis Fragment
1.6.2
: lorsque le fragment d'unFragmentContainerView
est gonflé, ses états tels queFragmentManager
, Host et id sont désormais accessibles dans le rappelonInflate
. (I1e44c, b/307427423) - Depuis Fragment
1.6.2
: lorsque vous utilisezclearBackStack
pour supprimer un ensemble de fragments, leViewModel
de tout fragment imbriqué est désormais effacé lorsque lesViewModels
du 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
animateToStart
ajouté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 des transitions AndroidX. Vous pouvez ainsi 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é. Pour activer cette fonctionnalité, vous devez dépendre de la version Transition
1.5.0-alpha03
. (Ib49b4, b/285175724)
Problèmes connus
- Il existe actuellement un problème qui fait que, lorsque vous annulez un geste Retour avec une transition, la transition ne s'exécute pas la prochaine fois que vous effectuez le geste Retour, ce qui entraîne 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 utilisant un exemple de projet qui le reproduit. Vous pouvez désactiver la prévisualisation du Retour 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 ne parvenaient pas à atteindre l'état de cycle de vie approprié. (I7cffe, b/297379023).
- Correction d'une régression qui permettait aux animations d'être exécutées avec des transitions. (I59f36)
- Correction d'un problème lié à l'utilisation de la prévisualisation du Retour avec des fragments. Si vous essayiez de revenir deux fois de suite sur l'avant-dernier fragment de la pile "Retour", un plantage se produisait. (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 le saut du premier fragment de la pile "Retour" du gestionnaire de fragments et la fin de l'activité lorsque vous utilisiez le Retour du 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 prévisualisation des gestes Retour à partir de l'API 34, si vous utilisez un système de transition qui n'accepte pas la recherche (
Animations
,Transitions
) ou aucune transition, les fragments attendent désormais que le geste soit terminé avant d'exécuter l'action 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 voir le fragment précédent avec votre animateur personnalisé avant de décider de valider la transaction via le geste terminé ou d'annuler. Vous pouvez également désactiver ce nouveau comportement à l'aide de la version expérimentale deenablePredictiveBack()
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
FragmentContainerView
est gonflé, ses états tels queFragmentManager
, Host et id sont désormais accessibles dans le rappelonInflate
. (I1e44c, b/307427423). - Lorsque vous utilisez
clearBackStack
pour supprimer un ensemble de fragments, leViewModel
de tout fragment imbriqué est désormais effacé lorsque leViewModels
du 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 dans lequel l'état enregistré stocké lorsque l'activité était arrêtée, mais pas détruite, était mis en cache de manière incorrecte, même après que l'instance de fragment a été rétablie à l'état
RESUMED
. Cet état mis en cache serait alors réutilisé si cette instance de fragment se trouvait dans la pile "Retour" lorsque vous utilisez l'API de plusieurs piles "Retour" 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. Cela corrige un problème qui empêchait les utilisateurs Kotlin d'étendre
ComponentDialog
sans 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
Fragment
s a été entièrement réparti entre l'état de la bibliothèque privée (classesParcelable
personnalisées) et l'état fourni par le développeur, qui est maintenant toujours stocké dans unBundle
qui permet de déterminer exactement l'origine de l'état d'un fragment. - L'interface
FragmentManager.OnBackStackChangedListener
a été étendue avec deux rappels supplémentaires deonBackStackChangeStarted
etonBackStackChangeCommitted
qui sont appelés avec chaqueFragment
juste avant qu'ils ne soient ajoutés/supprimés de la pile "Retour" du fragment, et juste après la validation de la transaction, respectivement. FragmentStrictMode
a ajouté une vérificationWrongNestedHierarchyViolation
qui détecte lorsqu'un fragment enfant est imbriqué dans la hiérarchie des vues de son parent, mais n'est pas ajouté auchildFragmentManager
de celui-ci.- Les API
Fragment
etFragmentManager
qui acceptent unIntent
ouIntentSender
sont désormais correctement annotées avec@NonNull
pour é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. DialogFragment
permet désormais d'accéder auxComponentDialog
sous-jacents 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-manifest
sé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
etandroidx.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
ActivityResult
avec le code de requête incorrect lorsque plusieurs requêtesstartActivityForResult
étaient effectuées de manière consécutive. (If0b9d, b/249519359) - Correction d'un problème qui entraînait l'envoi des rappels
onBackStackChangeListener
pour des transactions qui ne modifiaient pas réellement la pile "Retour" si elles étaient mélangées à des transactions qui le faisaient. (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
postponeEnterTransition
avec un délai avant expiration, puis le remplacement du fragment reporté ne provoque plus de fuite du fragment reporté. (I2ec7d, b/276375110). - Les nouveaux rappels
onBackStackChangeStarted
etonBackStackChangeCommitted
n'expédient désormais qu'un seul fragment, 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
DialogFragment
donne désormais accès auComponentDialog
sous-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èrent désormais toutes des erreurs de compilation lorsqu'elles ne sont pas appelées à partir du thread principal, au lieu d'attendre l'échec au moment de l'exécution. (Ic9665, b/236538905).
Correction de bugs
- Correction d'un bug dans
FragmentManager
qui entraînait un plantage lors de l'enregistrement et de la restauration dans le même frame. (Ib36af, b/246519668) - Les rappels
OnBackStackChangedListener
,onBackStackChangeStarted
etonBackStackChangeCommitted
ne s'exécutent désormais que lorsque la pile "Retour"FragmentManager
est 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 moment d'exécution du rappel
OnBackStackChangedListener.onBackStackChangeCommited
a été ajusté pour qu'il s'exécute avant les opérations de fragment. Cela garantit que le rappel ne transmet jamais un fragment dissocié. (I66a76, b/273568280)
Correction de bugs
- Depuis Fragment
1.5.6
: correction d'un problème pour lequel l'appel declearFragmentResultListener
dans unsetFragmentResultListener
ne fonctionnait pas si leLifecycle
était déjàSTARTED
et 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 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)
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
onBackStackChangedStarted
sur l'onBackStackChangedListener
deFragmentManager
est 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.OnBackStackChagnedListener
propose désormais deux autres rappels,onBackStackChangeStarted
etonBackStackChangeCommitted
, 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
Fragment
etFragmentManager
qui acceptent unIntent
ouIntentSender
sont désormais correctement annotées avec@NonNull
pour é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
FragmentStrictMode
a ajouté une vérificationWrongNestedHierarchyViolation
qui détecte lorsqu'un fragment enfant est imbriqué dans la hiérarchie des vues de son parent, mais n'est pas ajouté auchildFragmentManager
de celui-ci. (I72521, b/249299268)
Nouveaux comportements
- Les fragments restaurent désormais l'état
SavedStateRegistry
avantonAttach()
, 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-manifest
sé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'étatViewModel
comme 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
DialogFragment
devront 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
/Animator
par 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
Fragment
s a été entièrement réparti entre l'état de la bibliothèque privée (classesParcelable
personnalisées) et l'état fourni par le développeur, qui est maintenant toujours stocké dans unBundle
qui 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 leDialogFragmentCallbacksDetector
où 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
postponeEnterTransition
avec un délai avant expiration, puis le remplacement du fragment reporté ne provoque plus de 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
clearFragmentResultListener
dans unsetFragmentResultListener
de fonctionner si leLifecycle
était déjàSTARTED
et 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
ViewModel
de 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
FragmentController
personnalisé 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
/Animator
par 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
DialogFragmentCallbacksDetector
où 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 :
Fragment
peut désormais fournir unViewModelProvider.Factory
sans état viaCreationExtras
de Lifecycle2.5.0
. - Intégration des boîtes de dialogue de composants :
DialogFragment
utilise désormaisComponentDialog
via Activity1.5.0
comme 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 :
FragmentManager
enregistre désormais son état d'instance enregistré dansBundle
au lieu de passer directement par unParcelable
personnalisé.- Les résultats qui ont été définis via les
Fragment Result APIs
et 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
FragmentStrictMode
permet 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'
ActionBar
de votre activité ont été abandonnées. Les APIMenuHost
etMenuProvider
ajoutées dans Activity1.4.0
fournissent 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
DialogFragment
a ajouté une méthodedismissNow
qui utilisecommitNow
pour la parité avec la fonctionshowNow
. Notez que cela ne fermera pas immédiatement laDialog
, mais cela mettra uniquement à jour l'état deFragmentManager
de manière synchrone. (I15c36, b/72644830)
Refactorisation de l'état d'instance enregistré
FragmentManager
enregistre désormais son état d'instance enregistré dansBundle
au lieu de passer directement par unParcelable
personnalisé. 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()
deFragment
a é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
ActionBar
de 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 APIMenuHost
etMenuProvider
ajoutées dans Activity1.4.0-alpha01
fournissent une surface d'API équivalente, compatible avec le cycle de vie et testable, que les fragments doivent utiliser. (I50a59, I20758)
Corrections de bugs
SavedStateViewFactory
est 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
CreationExtras
aux fonctionsby viewModels()
etby activityViewModels()
. (Ibefe7, b/217601110)
Nouveaux comportements
DialogFragment
utilise désormaisComponentDialog
comme 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
FragmentStrictMode
permet 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
Fragment
s'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
:FragmentContainerView
ne 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 lambdaownerProducer
personnalisé avec la fonction paresseuseby viewModels()
, il utilise désormais ladefaultViewModelProviderFactory
de ce propriétaire si uneViewModelProvider.Factory
personnalisé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
FragmentContainerView
ne 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
ownerProducer
personnalisé avec la fonction paresseuseby viewModels()
, il utilise désormais ladefaultViewModelProviderFactory
de ce propriétaire si uneViewModelProvider.Factory
personnalisé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
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. LeFragmentStrictMode.Policy
qui contrôle les vérifications activées et les pénalités déclenchées peut être défini sur unFragmentManager
via la nouvelle méthodesetStrictModePolicy()
. Ce règlement s'applique à ceFragmentManager
et 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. FragmentContainerView
fournit 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>().navController
FragmentScenario
implémente désormaisCloseable
, ce qui vous permet de l'utiliser avec la méthodeuse
de 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 instancesViewModel
associé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
FragmentManager
ne 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)
DialogFragment
utilise désormaissetReorderingAllowed(true)
pour toutes les transactions qu'il crée lorsque vous appelezshow()
,showNow()
oudismiss()
. (Ie2c14)- L'avertissement lint extrêmement long de
DetachAndAttachFragmentInSameFragmentTransaction
a é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
DetachAndAttachFragmentInSameFragmentTransaction
pour détecter les appels dedetach()
etattach()
sur le mêmeFragment
dans 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
FragmentAddMenuProvider
indiquant d'utiliser le cycle de vie de la vue de Fragment au lieu du cycle de vie de Fragment lorsque vous utilisez l'APIaddMenuProvider
deMenuHost
. (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
,requestPermissions
etonRequestPermissionsResult
, comporte davantage de détails. (cce80f) - Le message d'abandon pour
onActivityCreated()
pourFragment
etDialogFragment
comporte 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
FragmentContainerView
a été réécrite en Kotlin pour s'assurer que la fonctiongetFragment
respecte 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
UseRequireInsteadOfGet
pour une meilleure gestion des parenthèses redondantes. (I2d865) - Amélioration de la vérification lint
UseGetLayoutInflater
pour 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
IllegalStateException
lors de la restauration d'uneFragmentTransaction
ou en tant que deuxième copie d'un fragment. Ce problème a été résolu. (I9039f) - Correction d'un problème pour lequel
FragmentManager
conservait une copie de l'état enregistré précédemment viasaveBackStack()
, même après la restauration de cet état. (Ied212) - La méthode
dismissAllowingStateLoss()
deDialogFragment
ne 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 surGONE
quand 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 deFragmentActivity
dans 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
FragmentManager
utilise désormaisSavedStateRegistry
en arrière-plan pour enregistrer son état. Les méthodessaveAllState()
etrestoreSavedState()
sont également obsolètes dansFragmentController
. Si vous utilisezFragmentController
pour héberger des fragments en dehors deFragmentActivity
, votreFragmentHostCallbacks
doit 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'uneFragmentTransaction
utilisantreplace()
. Ce problème a été résolu. (I73137) - Correction d'une
NullPointerException
qui 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
FragmentManager
continuait 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
Violation
de 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)FragmentTagUsageViolation
contient désormais un message d'erreur plus détaillé indiquant le conteneur parent auquel le fragment aurait été ajouté. (Ic33a7)WrongFragmentContainerViolation
dispose 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
TargetFragmentUsageViolation
disposent 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
RetainInstanceUsageViolation
disposent désormais de messages d'erreur plus détaillés qui incluent le fragment à l'origine de la violation. (I6bd55) FragmentReuseViolation
dispose désormais d'un message d'erreur plus détaillé incluant l'ID précédent du fragment. (I28ce2)SetUserVisibleHintViolation
dispose 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
fitsSystemWindows
dans 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.4
par aosp/1679887. Les fragments gèrent désormais correctement les groupes de transition (définis directement viatransitionGroup="true"
ou indirectement viatransitionName
oubackground
), et les éléments partagés ne génèrent plus deIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304) - Le
FragmentManager
ne plante plus lorsque vous tentez de masquer un fragment en cours de suppression. (I573dd, b/183634730) - La vérification lint
OnCreateDialogIncorrectCallback
ne 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
FragmentStrictMode
enregistre 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)FragmentStrictMode
permet désormais d'exempter certaines classesFragment
desViolation
en mode strict, ce qui permet à ces classes d'ignorer les pénalités éventuelles. (Ib4e5d, b/184786736)La classe de
Violation
FragmentStrictMode
a é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). ChaqueViolation
contient les éléments suivants :WrongFragmentContainerViolation
contient désormais leViewGroup
auquelFragment
tentait d'être ajouté. (I83c75, b/187871150)TargetFragmentUsageViolation
a été étendu àSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
etGetTargetFragmentRequestCodeUsageViolation
,SetTargetFragmentUsageViolation
contenant le fragment cible et le code de requête. (I741b4, b/187871150)SetUserVisibleHintViolation
contient désormais la valeur booléenne transmise danssetUserVisibleHint()
. (I00585, b/187871150)FragmentTagUsageViolation
contient désormais le ViewGroup dans lequel la balise<fragment>
tentait de gonfler un fragment. (I5dbbc, b/187871150)FragmentReuseViolation
contient désormais l'ID unique de l'instance précédente deFragment
à l'origine de la violation. (I0544d, b/187871150)RetainInstanceUsageViolation
est désormais abstrait et comporte deux sous-classes,SetRetainInstanceUsageViolation
etGetRetainInstanceUsageViolation
, représentant les deux cas pour le type de violation. (Ic81e5, b/187871150)
Nouveaux comportements
FragmentContainerView
génère désormais une exception lorsque vous tentez de modifier l'attributfitsSystemWindow
de 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
FragmentContainerView
fournit 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>().navController
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. (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 instancesViewModel
associé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
FragmentManager
ne 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 instanceFragment
précédemment supprimée est de nouveau en cours d'ajout à unFragmentManager
. Vous ne devez jamais interagir avec une instanceFragment
ni 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 utiliserFragmentContainerView
lorsque 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 utiliserFragmentContainerView
comme 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) FragmentScenario
implémente désormaisCloseable
, ce qui vous permet de l'utiliser avec la méthodeuse
de Kotlin ou avec try-with-resources. (#121, b/143774122)
Nouvelles vérifications lint
- La vérification lint
UseGetLayoutInflater
vous 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
DialogFragmentCallbacksDetector
vous avertit désormais lorsque vous appelezsetOnCancelListener
ousetOnDismissListener
dans la méthodeonCreateDialog()
d'unDialogFragment
. Ces écouteurs appartiennent auDialogFragment
lui-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.3
lors de l'utilisation de l'APIViewTreeViewModelStoreOwner.get()
avecViewModelProvider
ou de la méthode Jetpack Compose deviewModel()
dans un fragment. Ces cas d'utilisation utilisent désormais correctement leViewModelProvider.Factory
fourni par votre fragment s'il remplacegetDefaultViewModelProviderFactory()
(comme le font les fragments annotés@AndroidEntryPoint
lors de l'utilisation de Hilt). Si vous ne remplacez pas cette méthode, uneSavedStateViewModelFactory
qui 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
FragmentContainerView
avec l'API 29, les encarts ne sont plus envoyés indéfiniment, ce qui résout les problèmes avec les instancesBottomNavigationBar
etFloatingActionButton
. (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
transitionGroup
est 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
FragmentScenario
implémenteCloseable
. (#121, b/143774122) - Merci à simonschiller pour avoir ajouté l'ensemble de l'API
FragmentStrictMode
pour 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
:FragmentManager
ne 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
GONE
quand 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
FragmentActivity
dans 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.4
par aosp/1679887. Les fragments gèrent désormais correctement les groupes de transition (définis directement viatransitionGroup="true"
ou indirectement viatransitionName
oubackground
), 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.3
lors de l'utilisation de l'APIViewTreeViewModelStoreOwner.get()
avecViewModelProvider
ou 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.Factory
fourni par votre fragment s'il remplacegetDefaultViewModelProviderFactory()
(comme le font les fragments annotés@AndroidEntryPoint
). Si vous ne remplacez pas cette méthode, uneSavedStateViewModelFactory
qui 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
FragmentContainerView
avec l'API 29, les encarts ne sont plus envoyés indéfiniment, ce qui résout les problèmes avec les instancesBottomNavigationBar
etFloatingActionButton
. (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
transitionGroup
est 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
SavedStateViewModelFactory
fonctionne désormais lorsqu'elle est utilisée avec leSavedStateRegistryOwner
renvoyé 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 animationspopEnter
lors de l'affichage d'uneFragmentTransaction
contenant une opérationsetPrimaryNavFragment
, comme celles utilisées parNavHostFragment
(I38c87, b/183877426) FragmentContainerView
s'assure désormais que chaqueFragment
reçoit un nouvel ensemble deWindowInsets
, garantissant ainsi que chaque fragment peut désormais consommer les encarts de façon indépendante. (I63f68, b/172153900)DialogFragment
gère désormais correctement les cas où un fragment enfant est ajouté à un conteneur ayant le même ID qu'un conteneur de votre classeDialog
personnalisé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
InvalidFragmentVersionForActivityResult
d'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
DialogFragment
peuvent désormais accéder aux propriétaires de ViewTree via leur DecorView, ce qui garantit queDialogFragment
peut ê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
setFragmentResult
etsetFragmentResultListener
a é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
onCreateOptionsMenu
lors 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
FragmentManager
a 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
ActivityResultRegistry
introduite dans Activity1.2.0
pour 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 uneFragmentActivity
ou 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()
surFragmentActivity
etFragment
a été abandonné. Un nouveauFragmentOnAttachListener
a é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 classeFragmentScenario
de l'artefactfragment-testing
a été réécrite en Kotlin et a reçu un certain nombre d'améliorations :FragmentScenario
utilise 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.FragmentScenario
permet désormais de définir unLifecycle.State
initial permettant de valider l'état du fragment avant de passer à chaqueLifecycle.State
pour la première fois.- Il existe désormais une alternative à l'API
FragmentScenario
deonFragment
, 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
:Fragment
est désormais compatible avec les APIViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
etViewTreeSavedStateRegistryOwner
ajoutées dans Lifecycle2.3.0
et SavedState1.1.0
de sorte qu'il renverra le fragment en tant queViewModelStoreOwner
, et unSavedStateRegistryOwner
etLifecycleOwner
liés au cycle de vie de la vue du fragment lorsque vous utilisez uneView
dans unFragment
.Modifications de l'animation
TRANSIT_
: les effets par défaut des fragments,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
etTRANSIT_FRAGMENT_FADE
utilisent désormaisAnimator
au 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 deViewModel
et le rappelonCleared()
qu'il reçoit).Abandon de l'adaptateur ViewPager 1 : avec le lancement de ViewPager2
1.0.0
, les classesFragmentPagerAdapter
etFragmentStatePagerAdapter
permettant d'interagir avecViewPager
ont é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
DialogFragment
parent s'affichait au-dessus d'unDialogFragment
enfant 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
hide
avec uneAnimation
entraî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
Lifecycle
du fragment gère désormais correctement les cas où la vue du fragment est détruite avant queLifecycle
n'atteigneCREATED
. Cela évite les exceptions indiquant "no event down from INITIALIZED". (eda2bd, b/176138645) - Les fragments qui utilisent un
Animator
s'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
FragmentScenario
a é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
class
ouandroid:name
peuvent 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
, uneIllegalArgumentException
est désormais générée (Ie7651, b/170765622) - L'initialisation d'un FragmentScenario avec un état
DESTROYED
gé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
Animator
ou 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
Animation
en 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'
Animator
de 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
FragmentFactory
met 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'étatLifecycle
surINITIALIZING
tant 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
FragmentManager
non nul, et les fragments avec unFragmentManager
non nul seront toujours considérés comme actifs. (aosp/1422346) - Les effets par défaut des fragments,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
etTRANSIT_FRAGMENT_FADE
, utilisent désormaisAnimator
au 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
INVISIBLE
avant le début de l'animation, celle-ci restera invisible. (b/164481490) - Les fragments donnent désormais la priorité à
Animators
par rapport àAnimations
. Cela signifie qu'un fragment avec les deux n'exécute queAnimator
et 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
replace
est 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ù
Animation
remplacerait tous les effetsTransition
ou l'exécution d'unAnimator
et d'uneTransition
sur un fragment individuel. (b/149569323) - L'
enterTransition
et l'exitTranstion
de 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'étatSTARTED
avec les autres fragments. (b/129035555) - Correction d'un problème qui entraînait l'exécution d'opérations dans le désordre par
FragmentManager
lors 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)
FragmentManager
renvoie 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
Transition
du framework etTransition
d'AndroidX mentionne désormais le fragment avec une transition non valide. (b/155574969)
Nouveaux comportements
- Vous pouvez maintenant appeler
launch()
sur unActivityResultLauncher
dans 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) FragmentActivity
utilise désormais l'APIOnContextAvailableListener
introduite dans Activity1.2.0-alpha08
pour restaurer l'état deFragmentManager
. Tous les écouteurs ajoutés aux sous-classes deFragmentActivity
s'exécuteront après cet écouteur. (I513da)
Corrections de bugs
- Les
ActivityOptions
transmises 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
FragmentScenario
permet désormais de définir un état de cycle de vie initial deCREATED
,STARTED
ouRESUMED
au lieu de toujours faire passer le fragment à l'étatRESUMED
. (b/159662750)- Ajout d'une alternative à l'API
FragmentScenario
deonFragment
sous 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
FragmentScenario
utilise 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
SavedStateRegistryOwner
renvoyé parViewTreeSavedStateRegistryOwner
est 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
clearFragmentResultListener
efface 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()
surFragmentActivity
etFragment
a été abandonné. Un nouveauFragmentOnAttachListener
a é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
DialogFragment
affichait un autreDialogFragment
en tant que fragment enfant. (b/157195715) - Correction d'un problème qui empêchait la vérification lint
UseRequireInsteadOfGet
de 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-alpha03
et deViewTreeSavedStateRegistryOwner
à partir de SavedState1.1.0-alpha01
lorsque vous utilisez uneView
dans uneFragment
. (aosp/1297993, aosp/1300264)
Modifications apportées à l'API
- Les API
setFragmentResult()
etsetFragmentResultListener()
acceptent désormais respectivement les valeursBundle
etFragmentResultListener
. 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()
etrequestPermissions
précédemment abandonnés surFragment
, utilisent désormaisActivityResultRegistry
en 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
illegalStateException
lors de l'ajout d'un fragment à la hiérarchie de vues d'unDialogFragment
avecFragmentContainerView
. (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
prepareCall
surFragment
sont désormaisfinal
. (b/152439361)
Corrections de bugs
- Correction d'une régression introduite dans Fragment
1.3.0-alpha02
lors 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 lintFragmentLiveDataObserve
sur les classesDialogFragment
, car leur cycle de vie et le cycle de vie de leur vue sont toujours synchronisés. Vous pouvez donc utiliserthis
ouviewLifecycleOwner
lors 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
ActivityResultRegistry
introduite dans Activity1.2.0-alpha02
pour 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
DialogFragment
fournit désormais un constructeur qui accepte une@LayoutRes
indiquant 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, unLifeCycleObserver
doit être enregistré dans leLifecycle
de 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 dansDialogFragment
qui entraînait uneStackOverflowError
lors 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 lintUseRequireInsteadOfGet
lors 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
:FragmentContainerView
ne génère plus uneUnsupportedOperationException
en raison de l'utilisation d'un constructeur incorrect dans l'aperçu de mise en page. (b/149707833)
Problèmes connus
BottomSheetDialogFragment
ne 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 leviewLifecycleOwner
du fragment en tant queLifecycleOwner
pour 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 deViewModel
et le rappelonCleared()
qu'il reçoit). (b/143911815) - Avec le lancement de ViewPager2
1.0.0
, les classesFragmentPagerAdapter
etFragmentStatePagerAdapter
permettant d'interagir avecViewPager
ont é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
Fragment
des 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.2
n'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) FragmentContainerView
ne génère plus deUnsupportedOperationException
lors 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
FragmentLiveDataObserve
sur les classesDialogFragment
, car leur cycle de vie et le cycle de vie de leur vue sont toujours synchronisés. Vous pouvez donc utiliserthis
ouviewLifecycleOwner
lors 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
DialogFragment
qui entraînait uneStackOverflowError
lors 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
UseRequireInsteadOfGet
lors de l'utilisation d'un nom de variable locale qui occultait le nom de la propriété Kotlin. (b/149891163) FragmentContainerView
ne génère plus deUnsupportedOperationException
lors 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
viewLifecycleOwner
en tant queLifecycleOwner
dans les appels deOnBackPressedDispatcher
dansonCreateView()
,onViewCreated()
etonActivityCreated()
. (b/142117657) - Ajout d'une vérification lint qui confirme que vous utilisez le bon
debugImplementation
lorsque 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 unget
et 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
viewLifecycleOwner
lors de l'utilisation deobserve
pour gérer également la version de la méthode d'extensionobserve
delivedata-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
add
etreplace
qui utilisent une instanceClass
(ou les versions corrigées de Kotlin). (b/148181315) FragmentStatePagerAdapter
etFragmentPagerAdapter
ne détectent plus les exceptions générées parFragmentManager
lors 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 instanceFragmentManager
ne génère plus deNullPointerException
lorsque l'activité est déjà détruite. (b/148189412)
Modifications de la dépendance
- Fragments
1.2.1
dé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 :
FragmentContainerView
est le conteneur fortement recommandé pour les fragments ajoutés de façon dynamique. Il remplace l'utilisation deFrameLayout
ou d'autres mises en page. Il accepte aussi la mêmeclass
, le mêmeandroid:name
et le mêmeandroid:tag
facultatif que la balise<fragment>
, mais utilise uneFragmentTransaction
normale 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 unBundle
facultatif d'arguments. Ces méthodes utilisent votreFragmentFactory
pour 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 :
SavedStateViewModelFactory
est désormais la fabrique par défaut utilisée lorsque vous utilisezby viewModels()
,by activityViewModels()
, le constructeurViewModelProvider
ouViewModelProviders.of()
avec un fragment. - Nouvelles vérifications lint : ajout d'une nouvelle vérification lint qui garantit que vous utilisez
getViewLifecycleOwner()
lorsque vous observezLiveData
depuisonCreateView()
,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 leFragmentManager
non 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.enableDebugLogging
a été abandonnée. FragmentManager respecte désormaisLog.isLoggable()
pour la baliseFragmentManager
, ce qui vous permet d'activer la journalisationDEBUG
ouVERBOSE
sans recompiler votre application.
Problèmes connus
- Les fragments référencés uniquement via l'attribut
class
ouandroid:name
sur uneFragmentContainerView
ne 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 declass
ouandroid:name
en 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-rc04
lors 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_CLOSE
etTRANSIT_FRAGMENT_FADE
pour é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
INVISIBLE
par 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'uneFragmentFactory
affecte é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-rc03
et 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 KotlinviewLifecycleOwner
au 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
FragmentContainerView
accepte désormais l'attributclass
en 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 observezLiveData
depuisonCreateView()
,onViewCreated()
ouonActivityCreated()
. (b/137122478)
Corrections de bugs
- Les rappels
onDismiss
etonCancel
surDialogFragment
garantissent désormais que laDialogInterface
qui leur est transmise est non nulle et quegetDialog()
renvoie une valeur non nulle lors de leur exécution. (b/141974033) FragmentContainerView
ajoute maintenant le fragment défini parclass
ouandroid:name
pour le gonflement, afin quefindFragmentById()
etfindFragmentByTag()
fonctionnent immédiatement après. (b/142520327)- Correction d'une
IllegalStateException
dansFragmentContainerView
en raison de l'enregistrement de l'état. (b/142580713) - Correction d'une
UnsupportedOperationException
dansFragmentContainerView
lorsque la classeFragmentContainerView
est obscurcie. (b/142657034)
Problèmes connus
- Les fragments référencés uniquement via l'attribut
class
ouandroid:name
sur uneFragmentContainerView
ne 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 àFragmentContainerView
jusqu'à 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
FragmentContainerView
permet d'ajouter un fragment initial avec une prise en charge supplémentaire pour l'attribut XMLandroid:name
et l'attribut XML facultatifandroid:tag
. Contrairement à la balise<fragment>
,FragmentContainerView
utilise uneFragmentTransaction
standard en arrière-plan pour ajouter le fragment initial, ce qui permet d'effectuer d'autres opérationsFragmentTransaction
sur laFragmentContainerView
et 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
ClassCastException
lors 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-alpha03
et 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.transition
avant 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.transition
sur la vue racine de votre fragment avecFragmentContainerView
. (b/140361893) - L'artefact
fragment-testing
dé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.w
dans 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()
surFragment
ont été abandonnées et remplacées par une seule méthodegetParentFragmentManager()
, qui renvoie leFragmentManager
non 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.enableDebugLogging
a été abandonnée. FragmentManager respecte désormaisLog.isLoggable()
pour la baliseFragmentManager
, ce qui vous permet d'activer la journalisationDEBUG
ouVERBOSE
sans 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
FragmentContainerView
est désormaisfinal
. (b/140133091)
Corrections de bugs
FragmentContainerView
inverse 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
SavedStateViewModelFactory
est désormais la fabrique par défaut utilisée lorsque vous utilisezby viewModels()
,by activityViewModels()
, le constructeurViewModelProvider
ouViewModelProviders.of()
avec unFragment
. (b/135716331)- Les animations par défaut lorsque vous utilisez
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
etTRANSIT_FRAGMENT_FADE
avecsetTransition
sur unFragmentTransaction
ont é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
FragmentContainerView
comme 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 unBundle
facultatif d'arguments. Ces méthodes utilisent votreFragmentFactory
pour 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
@MainThread
ont été ajoutées aux rappels de cycle de vie deFragment
. (b/127272564) - Les API liées au titre du fil d'Ariane sur
FragmentTransaction
etFragmentManager.BackStackEntry
ont été abandonnées. (b/138252944) - La méthode
setTransitionStyle
surFragmentTransaction
a été abandonnée. (aosp/1011537) - Un grand nombre des méthodes dans
FragmentManager
ne sont plusabstract
.FragmentManager
lui-même resteabstract
et 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 dansFragmentPagerAdapter
etFragmentStatePagerAdapter
lors 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
NullPointerException
lors 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
IllegalStateException
s lors de l'utilisation deFragmentPagerAdapter
etFragmentStatePagerAdapter
dans 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
NullPointerException
lors de l'affichage d'uneFragmentTransaction
utilisantsetPrimaryNavigationFragment()
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-testing
fournit une classeFragmentScenario
permettant 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
FragmentFactory
sur unFragmentManager
pour 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-ktx
contient 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.FragmentPagerAdapter
etFragmentStatePagerAdapter
disposent d'un nouveau constructeur qui vous permet de passer au nouveau comportement. - Constructeur FragmentActivity LayoutId : les sous-classes de
FragmentActivity
peuvent désormais appeler facultativement un constructeur surFragmentActivity
qui 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
Fragment
peuvent désormais appeler facultativement un constructeur surFragment
qui 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
FragmentPagerAdapter
etFragmentStatePagerAdapter
lors 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
NullPointerException
lors de l'affichage d'uneFragmentTransaction
utilisantsetPrimaryNavigationFragment()
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
,STOPPED
etDESTROYED
) pour les fragments imbriqués sont désormais correctement imbriqués. (b/133497591) - Les instances
OnBackPressedCallback
enregistré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
FragmentFactory
instantiate
qui a été précédemment abandonnée et qui acceptait unBundle
a été supprimée. aosp/953856 - Modification destructive : les constantes
RESUME_ONLY_CURRENT_FRAGMENT
etUSE_SET_USER_VISIBLE_HINT
dansFragmentPagerAdapter
etFragmentStatePagerAdapter
ont été renommées respectivement enBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
etBEHAVIOR_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.FragmentPagerAdapter
etFragmentStatePagerAdapter
disposent d'un nouveau constructeur qui vous permet de passer au nouveau comportement. (b/129780800)
Modifications apportées à l'API
moveToState(STARTED)
surFragmentScenario
ne 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 constructeurcontentLayoutId
deFragmentActivity
ouAppCompatActivity
. (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
CREATED
aprè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
restoreSaveState
causé 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
OnBackPressedCallback
ajouté avec un cycle de vie de fragment n'était pas appelés si leFragmentManager
disposait 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_HARDWARE
pour 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
Fragment
etFragmentActivity
contiennent désormais un deuxième constructeur qui accepte un@LayoutRes int
et 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
instantiate
de FragmentFactory qui accepte un lot d'arguments a été abandonnée, et les applications doivent utiliser la nouvelle surchargeinstantiate
qui n'accepte pas de lot. (b/128836103) - Les méthodes
FragmentScenario
sont désormais correctement annotées avec@StyleRes
. (aosp/924193) FragmentTabHost
est 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
@ContentView
sur 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
@ContentView
sont 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 uneIllegalStateException
plutôt qu'un échec silencieux (aosp/904301)
Corrections de bugs
onNewIntent
pourFragmentActivity
est maintenant correctement marqué avec@CallSuper
(b/124120586)- Correction d'un problème pour lequel la méthode
onDismiss()
deDialogFragment
pouvait ê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-testing
dépend désormais deandroidx.test:core-ktx
1.1.0 stable (b/121209673)- Vous pouvez désormais utiliser
openActionBarOverflowOrOptionsMenu
avecFragmentScenario
pour 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 Bundle
ou 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
BundleSavedStateRegistryOwner
et dépend de la bibliothèque SavedState nouvellement publiée [aosp/824380] - Un délégué de propriété Kotlin
by activityViewModels
a été ajouté pour récupérer les ViewModels associés à l'activité contenante [b/119050253] - Le délégué de propriété Kotlin
by viewModels
a é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 autreViewModelStoreOwner
personnalisé avec du code tel queval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
Modifications apportées à l'API
FragmentScenario
vous 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 View
ou génère uneIllegalStateException
[b/120241368] - Ajout d'une méthode
requireParentFragment()
qui renvoie un@NonNull Fragment
ou 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
Bundle
non nul [b/119794496] - Les fragments supprimés ne réutilisent plus leur objet
Lifecycle
s'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
FragmentFactory
sur n'importe quelFragmentManager
pour 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-testing
dépend d'androidx.test:core:1.0.0-beta01
au lieu de la version correcteandroidx.test:core:1.0.0
.