La préférence ne peut pas lancer de java.lang.boolean String
J'ai la configuration suivante classe:
public class AppPreferencesActivity extends PreferenceActivity {
private SharedPreferences appPrefs;
private SharedPreferences.Editor prefEditor;
private Mediator mediator;
private SharedPreferences.OnSharedPreferenceChangeListener listener;
private User user;
@SuppressWarnings("deprecation")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//---load the preferences from an XML file---
addPreferencesFromResource(R.xml.preferences);
this.appPrefs = PreferenceManager.getDefaultSharedPreferences(this);
this.mediator = (Mediator) getApplication();
this.prefEditor = appPrefs.edit();
this.user = mediator.getUser();
setPreferences();
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
//Implementation
updatePreference(key);
Toast.makeText(AppPreferencesActivity.this,
"Information updated",
Toast.LENGTH_SHORT).show();
}
};
appPrefs.registerOnSharedPreferenceChangeListener(listener);
}
private void setPreferences(){
prefEditor.putString("nameEdit", user.getName() + " "+user.getLastName());
prefEditor.putString("streetEdit", user.getStreetName());
prefEditor.putString("streetNumberEdit", ""+user.getStreetNr());
prefEditor.putString("emailEdit", user.getEmail());
prefEditor.commit();
preferenceAddSummary();
}
public boolean checkEmailStatus(){
return appPrefs.contains("emailEdit");
}
@SuppressWarnings("deprecation")
private void preferenceAddSummary() {
for (Entry<String, ?> key : appPrefs.getAll().entrySet()) {
findPreference(key.getKey()).setSummary(appPrefs.getString(key.getKey(), "Not yet entered"));
//this is where im getting the error
}
Cependant lorsque je l'exécute j'ai le
Ne peut pas lancer de Java.lang.booléen pour Java.lang.Chaîne
J'ai cette erreur à la boucle im appel à setSumary quelqu'un peut me dire pourquoi ce qui se passe?
Mise à JOUR
Plein stackTrace dans le texte:
05-02 02:28:15.835: E/AndroidRuntime(1775): FATAL EXCEPTION: main
05-02 02:28:15.835: E/AndroidRuntime(1775): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.konkurrencesigner/com.example.konkurrencesigner.AppPreferencesActivity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.os.Handler.dispatchMessage(Handler.java:99)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.os.Looper.loop(Looper.java:137)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread.main(ActivityThread.java:5039)
05-02 02:28:15.835: E/AndroidRuntime(1775): at java.lang.reflect.Method.invokeNative(Native Method)
05-02 02:28:15.835: E/AndroidRuntime(1775): at java.lang.reflect.Method.invoke(Method.java:511)
05-02 02:28:15.835: E/AndroidRuntime(1775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-02 02:28:15.835: E/AndroidRuntime(1775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-02 02:28:15.835: E/AndroidRuntime(1775): at dalvik.system.NativeStart.main(Native Method)
05-02 02:28:15.835: E/AndroidRuntime(1775): Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:224)
05-02 02:28:15.835: E/AndroidRuntime(1775): at com.example.konkurrencesigner.AppPreferencesActivity.preferenceAddSummary(AppPreferencesActivity.java:55)
05-02 02:28:15.835: E/AndroidRuntime(1775): at com.example.konkurrencesigner.AppPreferencesActivity.setPreferences(AppPreferencesActivity.java:47)
05-02 02:28:15.835: E/AndroidRuntime(1775): at com.example.konkurrencesigner.AppPreferencesActivity.onCreate(AppPreferencesActivity.java:28)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.Activity.performCreate(Activity.java:5104)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-02 02:28:15.835: E/AndroidRuntime(1775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-02 02:28:15.835: E/AndroidRuntime(1775): ... 11 more
Montrez-nous le plein de trace de pile merci
Téléchargé impression de trace de la pile - Éditer seulement remarqué la taille de la mise à jour de l'image
Pourquoi êtes-vous téléchargez une image? Il suffit de copier coller la trace de la pile..
Mis à jour le post
Pour sauver les autres de temps à chercher sur cette erreur, il va également se produire si vous avez accidentellement utiliser un
Téléchargé impression de trace de la pile - Éditer seulement remarqué la taille de la mise à jour de l'image
Pourquoi êtes-vous téléchargez une image? Il suffit de copier coller la trace de la pile..
Mis à jour le post
Pour sauver les autres de temps à chercher sur cette erreur, il va également se produire si vous avez accidentellement utiliser un
CheckBoxPreference
au lieu d'une EditTextPreference
, au moins pour une entrée numérique de type. Sur appel de addPreferencesFromResource()
, Android ne lance que les faiblesses de l'erreur qu'il ne peut pas convertir une chaîne de caractères en une valeur booléenne.
OriginalL'auteur Marc Rasmussen | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
Évidemment que certains prefs sont vérifiées et ne retourne la valeur booléenne.
Vous ne pouvez donc pas l'utiliser directement.
Je pense que vous devriez peut-être utiliser comme ça:
Merci pour votre réponse cependant tous mes préférences est editText est-il possible que, par défaut, la carte contient un booléen?
Existe-il d'autres préférences que vous utilisez dans un autre fichier? Si vous écrivez un PreferenceActivity que les paramètres, toutes les valeurs seront enregistrées dans DefaultSharedPreferences en cas de défaut. Vous pouvez extraire le fichier xml à partir d'un périphérique de vérifier toutes les préférences. Le fichier xml sera enregistré dans data/data/yourpakcages/shared_prefs/yourpackage_preferences.xml dans votre appareil.
OriginalL'auteur buptcoder
J'avais la même erreur. J'ai supprimé l'Appli de données et de mon appli ne plante plus.
Cette correction du crash pour moi aussi. Ce qui s'est passé, j'ai été à la suite d'un tutoriel en ligne, de sorte que les touches de l'préférences ont été nommés de manière générique, comme "key1" et "key2". Je suis passé de leurs types, mais gardé les clés et c'est lorsque l'incident a commencé. Une compensation des applications de données a permis le développement de continuer.
Résolu mon problème tooo, merci beaucoup pour sauver beaucoup de temps
Ce pourrait être le cas, mais avez-vous testé ce qui se passe si vous modifiez la délinquance de valeur?
Nope, je n'ai pas.
OriginalL'auteur Svetoslav Marinov
J'ai eu cette erreur de trop. Il happined quand j'ai d'abord eu une case à cocher de préférence, puis utilisé le même nom pour une liste de préférences, mais sur mon téléphone dans les préférences, il a été enregistré comme un booléen et il a essayé de charger que dans ma liste.
correctif: effacer les données de l'application
OriginalL'auteur Renzo Ligthart
J'ai été faire cette erreur trop, et ne pouvais pas comprendre pourquoi. Je pense que c'est parce que j'ai ajouté une nouvelle préférence et essayé de courir à nouveau l'application. J'ai désinstallé l'application, puis il a couru de nouveau avec les nouvelles préférences, et cela a fonctionné. Peut-être qu'il avait besoin d'une réinitialisation complète de l'appareil pour réinitialiser les sharedpreferences fichier.
OriginalL'auteur zafirk