Preference
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
26 juillet 2023 | 1.2.1 | - | - | - |
Déclarer des dépendances
Pour ajouter une dépendance à Preference, vous devez ajouter le dépôt Maven Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.
Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle
de votre application ou module :
Groovy
dependencies { def preference_version = "1.2.1" // Java language implementation implementation "androidx.preference:preference:$preference_version" // Kotlin implementation "androidx.preference:preference-ktx:$preference_version" }
Kotlin
dependencies { val preference_version = "1.2.1" // Java language implementation implementation("androidx.preference:preference:$preference_version") // Kotlin implementation("androidx.preference:preference-ktx:$preference_version") }
Pour en savoir plus sur les dépendances, consultez la page 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.2
Version 1.2.1
26 juillet 2023
Publication d'androidx.preference:preference:1.2.1
. Liste des commits de la version 1.2.1
Correction de bugs
PreferenceHeaderFragmentCompat
gère désormais correctement le bouton "Retour" du système lorsqu'il est utilisé dans unComponentDialog
ou lors de l'utilisation de bibliothèques telles que@AndroidEntryPoint
de Hilt qui encapsulent leContext
du fragment.- Les préférences dépendent désormais de Activity 1.5.1. (Ie5d22).
PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment
propage désormaisheader.extras
en tant qu'argumentsFragment
.
Version 1.2.0
26 janvier 2022
Publication d'androidx.preference:preference:1.2.0
et androidx.preference:preference-ktx:1.2.0
. Liste des commits de la version 1.2.0
Changements importants depuis la version 1.1.0
- Ajout de
PreferenceHeaderFragmentCompat
pour la préférence de double volet, qui s'adapte automatiquement à la taille de l'appareil utilisé et peut donc être utilisé sur des téléphones, des pliables et des tablettes. Le volet d'en-tête est fourni en remplaçant la méthodeonCreatePreferenceHeader()
surPreferenceHeaderFragmentCompat
. Toute<Preference>
dans l'en-têtePreferenceFragmentCompat
utilisantapp:fragment
entraînera l'affichage de ce fragment dans le deuxième volet Détails. Vous pouvez personnaliser le fragment de détails initial qui doit s'afficher avant qu'une préférence ne soit sélectionnée manuellement en remplaçantonCreateInitialDetailFragment()
. L'implémentation par défaut renvoie la première préférence pour laquelle un fragment est défini.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
return PreferenceHeader()
}
}
Ajout d'annotations concernant la possibilité d'une valeur nulle à de nombreuses API qui ne spécifiaient pas
@NonNull
ni@Nullable
. Il s'agit d'une modification potentiellement destructive de la source Kotlin si la possibilité de valeur nulle que vous aviez choisie dans votre code Kotlin ne correspond pas à la possibilité de valeur nulle désormais définie.PreferenceFragmentCompat
recherche maintenant les implémentations des interfacesOnPreferenceStartFragmentCallback
,OnNavigateToScreenListener
etOnDisplayPreferenceDialogListener
sur les fragments parents avant de vérifier si le contexte ou l'activité de l'hébergement implémente ces interfaces.
Version 1.2.0-rc01
15 décembre 2021
Publication d'androidx.preference:preference:1.2.0-rc01
et androidx.preference:preference-ktx:1.2.0-rc01
sans aucune modification par rapport à la version 1.2.0-beta01
. Liste des commits de la version 1.2.0-rc01
Version 1.2.0-beta01
17 novembre 2021
Publication d'androidx.preference:preference:1.2.0-beta01
et androidx.preference:preference-ktx:1.2.0-beta01
sans aucune modification de Preference par rapport à la version 1.2.0-alpha02. Liste des commits de la version 1.2.0-beta01
Version 1.2.0-alpha02
3 novembre 2021
Publication d'androidx.preference:preference:1.2.0-alpha02
et androidx.preference:preference-ktx:1.2.0-alpha02
. Liste des commits de la version 1.2.0-alpha02
Modifications apportées à l'API
- Ajout d'annotations concernant la possibilité d'une valeur nulle à de nombreuses API qui ne spécifiaient pas
@NonNull
ni@Nullable
. (I04252, Ie2cc0) - Suppression de l'API
openPreference()
dePreferenceHeaderFragmentCompat
: cette méthode est appelée pour vous et ne doit pas être appelée manuellement. (Ia6989)
Nouveaux comportements
- Les rappels PreferenceFragmentCompat pour
OnNavigateToScreenListener
etOnDisplayPreferenceDialogListener
suivent désormais le même schéma queOnPreferenceTreeClickListener
et recherchent la présence d'écouteurs valides dans la hiérarchie de fragments parents avant de vérifier si le contexte ou l'activité de l'hébergement implémente ces interfaces. (I7ae6c)
Version 1.2.0-alpha01
27 octobre 2021
Publication d'androidx.preference:preference:1.2.0-alpha01
et androidx.preference:preference-ktx:1.2.0-alpha01
. Liste des commits de la version 1.2.0-alpha01
Nouvelles fonctionnalités
- Ajout de
PreferenceHeaderFragmentCompat
pour la préférence de double volet (I9a2d8)
Nouveaux comportements
Les rappels de Preference pour OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback et OnPreferenceStartFragmentCallback peuvent désormais être mis en œuvre dans un contexte autre qu'une activité. La méthode getContext() est vérifiée afin de voir si elle met en œuvre ces rappels avant la vérification de la méthode getActivity(). Si getContext() renvoie une activité (cas courant), il n'y a aucun changement de comportement.
L'appel de
PreferenceFragmentCompat
àonPreferenceTreeClick
recherche désormais les implémentations de l'interfaceOnPreferenceStartFragmentCallback
sur les fragments parents avant d'envisager l'implémentation de l'activité. (c64eed)
Version 1.1
Version 1.1.1
15 avril 2020
Publication d'androidx.preference:preference:1.1.1
et androidx.preference:preference-ktx:1.1.1
. Liste des commits de la version 1.1.1
Corrections de bugs
PreferenceDialogFragmentCompat
ne génère plus uneIllegalStateException
lors du gonflage d'une propriétéFragmentContainerView
via XML. (b/150051716)
Mises à jour des dépendances
- Preference dépend maintenant de Fragment
1.2.4
. (aosp/1277317) - La dépendance
preference-ktx
dépend désormais deandroidx.core:core-ktx:1.1.0
et deandroidx.fragment:fragment-ktx:1.2.4
, en mettant en miroir les dépendances de l'artefactpreference
principal, et en s'assurant que la mise à niveau depreference-ktx
met à jour les artefacts principaux et les artefacts-ktx
des dépendances transitives. (aosp/1277319)
Version 1.1.0
5 septembre 2019
Publication d'androidx.preference:preference:1.1.0
et d'androidx.preference:preference-ktx:1.1.0
. Les commits inclus dans cette version sont disponibles sur cette page.
S'il s'agit de la première version 1.1.*
vers laquelle vous effectuez une mise à jour, voici une liste concise des modifications plus importantes apportées depuis la dernière version stable, 1.0.0
. Le guide des paramètres, un exemple d'application et une présentation lors du sommet des développeurs Android peuvent également vous être utiles.
Changements importants depuis la version 1.0.0
PreferenceFragment
et d'autres classes utilisant des fragments de framework sont devenues obsolètes. Utilisez plutôtPreferenceFragmentCompat
et d'autres classes *compat.- Vous pouvez désormais définir un
SummaryProvider
pour un objet Preference afin de configurer son résumé de manière dynamique chaque fois que l'objet Preference est mis à jour ou devient visible par l'utilisateur. Pour en savoir plus, consultez le guide. - Ajout de l'interface
EditTextPreference.OnBindEditTextListener
. Elle permet de personnaliser l'EditText
affiché dans la boîte de dialogue correspondante une fois la boîte de dialogue liée. Il s'agit d'un remplacement direct permettant d'utiliser des attributs tels queandroid:inputType
directement dansEditTextPreference
, qui n'est pas compatible avec la bibliothèque AndroidX. Pour en savoir plus, consultez le guide. - Ajout de
Preference.setCopyingEnabled()
. Lorsque ce paramètre est défini, un appui prolongé sur l'objet Preference permet d'afficher un menu contextuel vous permettant de copier le résumé de l'objet Preference. - Modification du style de
SeekBarPreference
pour qu'il corresponde aux spécifications de Material. Consultez le journal des modifications détaillé pour en savoir plus sur les autres modifications apportées àSeekBarPreference
. - Implémentation d'un grand nombre de corrections de bugs, de mises à jour de styles, de corrections de la compatibilité au niveau de l'API et d'améliorations générales de qualité de vie.
Version 1.1.0-rc01
2 juillet 2019
Publication d'androidx.preference:preference:1.1.0-rc01
et d'androidx.preference:preference-ktx:1.1.0-rc01
. Les commits inclus dans cette version sont disponibles sur cette page.
Modifications apportées à l'API
Preference#onInitializeAccessibilityNodeInfo
est devenu obsolète.- Cette méthode envoyait par proxy les informations de nœud d'accessibilité pour un objet Preference spécifique, mais il ne s'agit pas de la bonne couche pour cette personnalisation. Si vous souhaitez modifier les informations d'accessibilité, vous devez remplacer la valeur onBindViewHolder et ajouter directement les informations d'accessibilité à la vue.
Version 1.1.0-beta01
5 juin 2019
Publication d'androidx.preference:preference:1.1.0-beta01
et d'androidx.preference:preference-ktx:1.1.0-beta01
. Les commits inclus dans cette version sont disponibles sur cette page.
Changements importants depuis la version 1.1.0
S'il s'agit de la première version 1.1.* vers laquelle vous effectuez une mise à jour, voici une liste concise des modifications plus importantes apportées depuis la dernière version stable, 1.1.0. Le guide des paramètres, un exemple d'application et une présentation lors du sommet des développeurs Android peuvent également vous être utiles.
- PreferenceFragment et d'autres classes utilisant des fragments de framework sont devenues obsolètes. Utilisez plutôt PreferenceFragmentCompat et d'autres classes *compat.
- Vous pouvez désormais définir un SummaryProvider pour un objet Preference afin de configurer son résumé de manière dynamique chaque fois que l'objet Preference est mis à jour ou devient visible par l'utilisateur. Pour en savoir plus, consultez le guide.
- Ajout de l'interface
EditTextPreference.OnBindEditTextListener
. Elle permet de personnaliser l'EditText affiché dans la boîte de dialogue correspondante une fois la boîte de dialogue liée. Il s'agit d'un remplacement direct permettant d'utiliser des attributs tels que android:inputType directement dans EditTextPreference, qui n'est pas compatible avec la bibliothèque AndroidX. Pour en savoir plus, consultez le guide. - Ajout de
Preference.setCopyingEnabled()
. Lorsque ce paramètre est défini, un appui prolongé sur l'objet Preference permet d'afficher un menu contextuel vous permettant de copier le résumé de l'objet Preference. - Modification du style de SeekBarPreference pour qu'il corresponde aux spécifications de Material. Consultez le journal des modifications détaillé pour en savoir plus sur les autres modifications apportées à SeekBarPreference.
- Implémentation d'un grand nombre de corrections de bugs, de mises à jour de styles, de corrections de la compatibilité au niveau de l'API et d'améliorations générales de qualité de vie.
Modifications de l'API depuis la version 1.1.0-alpha05
- Suppression de getOnBindEditTextListener de l'API publique. Vous ne devez utiliser setOnBindEditTextListener que pour interagir avec cette API.
Si vous rencontrez des problèmes ou si vous avez des suggestions de nouvelles fonctionnalités, cliquez ici pour nous les communiquer.
Version 1.1.0-alpha05
7 mai 2019
Publication d'androidx.preference:preference:1.1.0-alpha05
et d'androidx.preference:preference-ktx:1.1.0-alpha05
. Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Modification du style des objets Preference non sélectionnables : le titre et le résumé ont désormais la même couleur pour indiquer clairement qu'il est impossible d'interagir avec ces éléments et qu'ils ne sont utilisés que pour afficher des informations.
- Remarque : nous vous conseillons d'ajouter
enableCopying="true"
à vos objets Preference non sélectionnables afin de pouvoir copier le résumé à l'aide d'un appui long.
Corrections de bugs
- Correction d'une régression où PreferenceCategory et d'autres objets Preference non sélectionnables avaient un effet d'ondes en cas de sélection
- Correction d'un problème d'accessibilité où TalkBack ne voyait pas DropDownPreference en tant qu'élément cliquable
- Correction de certains problèmes de mise en page de droite à gauche
- Mise à jour de certaines annotations pouvant être nulles dans PreferenceFragmentCompat pour qu'elles correspondent à Fragment
Version 1.1.0-alpha04
13 mars 2019
Publication d'androidx.preference:preference:1.1.0-alpha04
et androidx.preference:preference-ktx:1.1.0-alpha04
. La liste complète des commits inclus dans cette version est disponible sur cette page.
Nouvelles fonctionnalités
Mise à jour de SeekBarPreference
.
- Style mis à jour pour correspondre aux spécifications de Material
- Le libellé de la valeur est désormais masqué par défaut, bien qu'il puisse toujours être affiché avec
app:showSeekBarValue="true"
ousetShowSeekBarValue(true)
. Ce libellé ne fait pas partie des spécifications de Material, mais nous savons qu'il est très utilisé. Nous continuerons donc à le prendre en charge, même si nous ne vous recommandons pas de l'utiliser. - Le libellé de la valeur est maintenant mis à jour lorsque la barre de recherche est déplacée, et non lorsqu'elle est relâchée. Notez que cela ne signifie pas que la valeur est mise à jour en interne. Voir ci-dessous pour une nouvelle API qui active cette fonctionnalité.
- Remarque : bien que cette fonctionnalité soit compatible, vous devez éviter de définir un résumé sur une SeekBarPreference, car ce comportement n'est pas prévu et ne fait pas partie des spécifications de Material.
- Le libellé de la valeur est désormais masqué par défaut, bien qu'il puisse toujours être affiché avec
- Ajout de la prise en charge des mises à jour continues, qui permet à la barre de recherche de mettre à jour sa valeur enregistrée tout en étant déplacée. Cette fonctionnalité peut être activée à partir d'un fichier XML ou d'un programme, avec
app:updatesContinuously="true"
ousetUpdatesContinuously(true)
. Cette action se déclenchera chaque fois que la position de la barre de recherche sera modifiée.
Modifications apportées à l'API
- Ajoute les annotations de possibilité de valeur nulle manquantes pour
findPreference()
Corrections de bugs
- Correction d'un bug qui empêchait la suppression correcte des écouteurs du menu contextuel si la copie n'était pas activée
Version 1.1.0-alpha03
7 février 2019
androidx.preference:preference 1.1.0-alpha03
Publication d'androidx.preference:preference 1.1.0-alpha03
et androidx.preference:preference-ktx 1.1.0-alpha03
avec les modifications suivantes.
Corrections de bugs
- Correction d'un problème qui empêchait parfois l'affichage du pop-up de copier-coller dans la boîte de dialogue EditTextPreference
- Correction d'un problème pour lequel l'adaptateur sous-jacent n'était pas correctement enregistré, ce qui provoquait des fuites de mémoire sous certaines conditions (b/121006469)
- Correction de plantages liés à des boîtes de dialogue, qui se produisaient pendant la modification de la configuration (b/122167543)
- Résolution du problème de fonctionnement de SummaryProvider avec MultiSelectListPreference (b/123022772)
Version 1.1.0-alpha02
17 décembre 2018
Veuillez également consulter le guide des paramètres et l'exemple d'application, qui ont été mis à jour récemment.
Nouvelles fonctionnalités
Ajout de l'interface
EditTextPreference.OnBindEditTextListener
qui permet de personnaliser l'EditText affiché dans la boîte de dialogue correspondante une fois la boîte de dialogue liée. Par exemple, vous pouvez définir un type/longueur d'entrée personnalisé ou ajouter un TextWatcher.Ajout de
Preference.setCopyingEnabled()
. Lorsque ce paramètre est défini, un appui prolongé sur l'objet Preference permet d'afficher un menu contextuel vous permettant de copier le résumé de l'objet Preference. Cela permet d'autoriser la copie d'informations statiques, telles que des ID utilisateur spécifiques ou des informations de version d'application.preferenceTheme est maintenant appliqué au thème de l'activité. Cela signifie que lorsque vous créez un objet Preference à partir du code, vous n'avez plus besoin d'utiliser le contexte de
PreferenceManager#getContext()
. Vous pouvez simplement utiliser le contexte de votre fragment/activité.
Modifications apportées à l'API
- Refactorisation de
findPreference()
pour renvoyer<T extends Preference>
. Autrement dit, vous n'avez pas besoin de caster explicitement des objets Preference lorsque vous utilisez findPreference(). Par exemple,EditTextPreference preference = findPreference(“edit_text”)
est désormais un code valide.
Version 1.1.0-alpha01
5 novembre 2018
Nouvelles fonctionnalités
- Vous pouvez désormais définir un SummaryProvider pour un objet Preference afin de configurer son résumé de manière dynamique chaque fois que l'objet Preference est mis à jour ou devient visible par l'utilisateur.
- Ajout des implémentations de SummaryProvider par défaut pour ListPreference et EditTextPreference. Lorsqu'elles sont définies, elles permettent de mettre à jour automatiquement le résumé de l'objet Preference pour indiquer la valeur enregistrée, ou la mention "Not Set" (Non défini) si aucune valeur n'a été enregistrée. Vous pouvez les définir avec app:useSimpleSummaryProvider=”true”
- Ajout de PreferenceGroup#removePreferenceRecursively, qui recherche et supprime de manière récursive un objet Preference dans le groupe, ou dans un groupe imbriqué à un niveau inférieur dans la hiérarchie.
Modifications apportées à l'API
- PreferenceFragment et d'autres classes utilisant des fragments de framework sont maintenant obsolètes. Utilisez plutôt PreferenceFragmentCompat et d'autres classes compat.
Corrections de bugs
- Correction d'iconSpaceReserved qui ne fonctionnait pas correctement avec PreferenceCategories.
- Correction de PreferenceCategories qui n'utilisaient pas colorAccent pour la couleur de leur titre dans les versions antérieures à la version d'API 21.
- Correction d'incohérences de mise en page de SeekBarPreference dans les versions antérieures à la version d'API 21.