Android Préférences d'erreur, “Chaîne de caractères ne peut pas être converti en int”
Je suis en train de configuration de préférences de l'activité, mais mon application crash et j'ai le logcat:
EXCEPTION FATALE: principaux java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{com.appthing.myapp/com.appthing.myapp.Principal}:
java.lang.ClassCastException: java.lang.La chaîne ne peut pas être lancé à
java.lang.EntierCausés par: java.lang.ClassCastException: java.lang.La chaîne ne peut pas être
fonte à java.lang.Entier 07-24 16:37:59.556: E/AndroidRuntime(17384):
au
android.app.SharedPreferencesImpl.getInt(SharedPreferencesImpl.java:240)
Dans mon Main
activité, j'ai le code suivant à l'intérieur de la onResume()
méthode:
SeekBar tipSeekBar = (SeekBar) findViewById(R.id.tipSeekBar);
SeekBar splitSeekBar = (SeekBar) findViewById(R.id.splitSeekBar);
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
tipSeekBar.setProgress(preferences.getInt("defaultTip", 15));
splitSeekBar.setProgress(preferences.getInt("defaultSplit", 1));
tipSeekBar.setMax(preferences.getInt("maxTip", 25));
splitSeekBar.setMax(preferences.getInt("maxSplit", 10));
Voici ce que j'ai dans la Préférence de la classe (comme demandé):
addPreferencesFromResource(R.layout.preferences);
//I was told in tutorials this is all I need in the oncreate method
Je ne comprends pas pourquoi sa parle d'une chaîne de caractères. Toutes mes valeurs sont des entiers et je suis en utilisant android:inputType="number"
à assurez-vous qu'un int peut être entré. J'ai aussi essayé de désinstaller et ré-installer l'application pour effacer le cache et rien ne fonctionne.
RÉSOLU:
"Vos Préférences dans le XML, même si vous définissez android:inputType="nombre" sont toujours stockées en tant que Chaîne" (par Waza_Be).
Tout ce que j'avais à faire est de Integer.parseInt()
pour saisir la valeur correcte.
Vous pouvez poster comment vous êtes stocker les valeurs dans les préférences?
Oui, j'ai mis à jour mon post.
Qui ligne dans votre code est en train de lancer cette exception?
OriginalL'auteur | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Vos Préférences dans le XML, même si vous définissez
android:inputType="number"
sont toujours stockées sous forme de ChaîneVous avez 2 choix:
1) le "pas-si-gentil":
Integer.parseInt( preferences.getString("defaultTip", "15"));
2) à l'Aide de votre propre type de Entier de Préférence. Plus compliquée à mettre en premier lieu, mais vraiment mieux (question similaire ici: https://stackoverflow.com/a/3755608/327402)
Contente d'avoir pu m'aider.
Eh bien, c'est tout à fait stupide. Surtout quand votre ListPreferences sont le référencement d'un <integer-array>, il traite toujours comme des Chaînes de caractères. Merci pour l'astuce.
J'ai mis de la chaîne de valeur "" partagée de la préférence pour objet integer, alors, quand je reçois de la valeur de la préférence que je reçois à ce problème, assurez-vous de définir la valeur dans la préférence est entier.
OriginalL'auteur Waza_Be
L'exception peut également être levée si vous utilisez le même
key
pour le stockage de deux ou plus de différents type devalues
.OriginalL'auteur Levon Petrosyan
Si vous stockez les préférences avec le droit des types de données, alors il ne devrait pas être un problème. Merci de regarder la JavaDoc ici.
OriginalL'auteur Phani