Erreur de Préférences Android, "String ne peut pas être transmis à int"

J'essaie de configurer une activité de préférences, mais mon application continue de s'écraser et je reçois le logcat suivant:

EXCEPTION FATALE: java.lang.RuntimeException principale: impossible de démarrer l'activité ComponentInfo {com.appthing.myapp / com.appthing.myapp.Main}: java.lang.ClassCastException: java.lang.String ne peut pas être transféré sur java.lang. Entier

  • Comment ajouter un SDK à Android Studio?
  • Comment puis-je exécuter quelque chose une fois par début d'application?
  • Android Studio crée des saveurs - Comment avoir les mêmes fichiers source dans des arômes variés
  • Article extensible dans la liste sur Android
  • Obtenir un nom de fichier après que le filtreur a chargé de manière asynchrone un fichier
  • Différence entre OnTouch et OnClick Android
  • Causé par: java.lang.ClassCastException: java.lang.String ne peut pas être transféré sur java.lang.Integer 07-24 16: 37: 59.556: E / AndroidRuntime (17384): à android.app.SharedPreferencesImpl.getInt (SharedPreferencesImpl. Java: 240)

    Dans mon activité Main , j'ai le code suivant dans la méthode onResume() :

      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 classe Préférence (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 il dit quelque chose à propos d'une chaîne. Toutes mes valeurs sont des nombres entiers et j'utilise android:inputType="number" pour s'assurer que seul un int peut être entré. J'ai également essayé de désinstaller et de réinstaller l'application pour effacer le cache et rien ne fonctionne.

    RÉSOLU:

    "Vos préférences en XML, même si vous définissez Android: inputType =" numéro "sont toujours stockés en chaîne" (par Waza_Be ). Tout ce que j'ai dû faire est de faire Integer.parseInt() pour saisir la valeur correcte.

  • Utilisation du même magasin de stockage de débogage sur plusieurs ordinateurs
  • Gérer le code / construire pour les magasins d'applications Android (Google / Amazon / etc)?
  • Quelle est la meilleure pratique pour nommer l'id d'XML Element dans Android?
  • Android se déplace vers le bas d'une liste
  • Comment afficher InfoWindow à l'aide d'Android Maps Utility Library pour Android
  • Changer l'échelle Progress / Seekbar pour être non linéaire (p. Ex. Logarithmique)
  • 3 Solutions collect form web for “Erreur de Préférences Android, "String ne peut pas être transmis à int"”

    Vos préférences en XML, même si vous définissez android:inputType="number" sont toujours stockés en tant que chaîne

    Vous avez 2 choix:

    1) 'not-so-nice': Integer.parseInt( preferences.getString("defaultTip", "15"));

    2) En utilisant votre propre type de préférence entière. Plus compliqué de définir en premier lieu mais vraiment mieux (question similaire ici: https://stackoverflow.com/a/3755608/327402 )

    Dans votre extrait, à quelle ligne se produit l'exception? Est-ce que la «défaillance» est une faute de frappe?

     splitSeekBar.setProgress(preferences.getInt("defatultSplit", 1)); 

    Si vous stockez les préférences avec les bons types de données, cela ne devrait pas être un problème. Regardez JavaDoc ici .

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.