Comment déclarer le type de Android préférence?
J'ai un preferences.xml qui ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:name="Sample"
android:enabled="true"
android:persistent="true"
android:summary="Sample"
android:defaultValue="3.0"
android:title="Sample"
android:key="sample" />
</PreferenceScreen>
Quand je fais sp.getString("exemple", "3.0"), il fonctionne très bien et retourne une chaîne de caractères, mais il ne devrait pas être une chaîne de caractères, il doit être d'un flotteur. L'exécution de sp.getFloat("exemple", 3.0 f) jette un ClassCastException parce que c'est une chaîne.
Que dois-je mettre dans le fichier XML de sorte que la préférence est stockée comme un float?
Vous devez vous connecter pour publier un commentaire.
Dans vos préférences xml, vous pouvez ajouter une option
android:numeric
avec la valeur"integer"
. De cette façon, l'utilisateur doit seulement être en mesure d'entrer un entier valide.Lors du chargement de la configuration, vous devriez essayer d'analyser un certain nombre de vous-même (comme toutes les valeurs sont stockées en tant que Les chaînes (@mbaird ci-dessous)):
Si vous êtes en utilisant l'écran des préférences de l'API au lieu d'écrire vos propres boîtes de dialogue de préférences ou d'Activités, alors vous allez être un peu limité à certains égards. Par exemple EditTextPreference toujours stocker la valeur sous forme de Chaîne.
De la Doc de l'API:
Je remarque qu'il ne semble pas être un moyen pour vous de restreindre l'utilisateur à taper simplement dans un valide nombre à virgule flottante dans votre champ de texte. Que feriez-vous si ils ont tapé dans "abc"?
Comme mbaird souligné vous ne pouvez pas forcer pour stocker en tant que Float.
Mais vous pouvez changer la
EditTextPreference
à une plainePreference
vue, et de mettre en œuvre laclick
cas pour elle. De cette façon, vous serez en mesure de créer et de montrer votre propre boîte de Dialogue pour modifier la valeur, et donc vous pouvez restreindre le format et l'enregistrer en tant que Float pour le fichier de préférences.