2010-09-09 13 views
2

documentation pour les états PreferenceActivity "Ces préférences seront automatiquement enregistrées dans SharedPreferences lorsque l'utilisateur interagira avec elles." Dans ce cas, si je sous-classe PreferenceActivity, appelez addPreferencesFromResource dans onCreate, définissez des préférences dans l'interface utilisateur. Toutes les modifications apportées à mes préférences devraient automatiquement être sauvegardées; et quand je reviens à mon écran de préférence plus tard toutes les préférences devraient être restaurées.Preferences & CheckBoxPreference

La raison pour laquelle je demande est CheckBoxPreference ne se comporte pas comme prévu, en supposant que ma compréhension est correcte bien sûr. Je m'attendrais si j'ai un CheckBoxPreference la sélection des utilisateurs devrait être enregistrée automatiquement lors de la modification. Ce n'est pas le cas?

Donc, quelqu'un peut s'il vous plaît confirmer ma compréhension ou me corriger si nécessaire?

Je peux créer un écran de préférences personnalisées où je gère tous les changements de code, mais je préfère utiliser l'approche recommandée. Je me demande juste s'il y a un bug. Il suffit de dire que je suis un peu frustré en ce moment.

BTW Je suis en développement contre la version 2.0 de l'API.

Répondre

1

Je m'attendrais à ce que, si j'ai une CheckBoxPreference, la sélection des utilisateurs soit enregistrée automatiquement lors de la modification. N'est-ce pas le cas?

Cela fonctionne très bien, s'ils font une sélection positive. S'ils visitent votre activité et ne touchent pas un CheckboxPreference, il restera à la valeur par défaut.

+0

Donc, si je fais une sélection positive et que j'utilise ensuite le bouton retour, la sélection positive devrait être enregistrée, correct? Parce que si c'est le comportement conçu, ça ne se passe pas. La sélection positive est partie quand je retourne à l'activité. Si je quitte l'activité via le bouton d'accueil et que je reviens plus tard, la sélection positive est affichée. Le seul code que j'ai est dans onCreate où j'appelle addPreferencesFromResource. Désolé si tout cela est très basique mais je suis juste en train d'essayer de comprendre le cadre de préférences d'Android et ce comportement m'a un peu confus. – PAS

+0

@Trip: "Donc, si je fais une sélection positive et que j'utilise ensuite le bouton de retour, la sélection positive devrait être sauvegardée, n'est-ce pas?" -- Oui. "Parce que si c'est le comportement prévu, ça ne se passe pas, la sélection positive est partie quand je retourne à l'activité." - Voici un exemple de projet où tout cela fonctionne bien: http://github.com/commonsguy/cw-android/tree/master/Prefs/Dialogs/ – CommonsWare

+0

@CW Merci pour l'exemple de code/référence. Un projet de test de base fonctionne comme je m'y attendais, j'ai donc quelque chose à faire dans mon travail de développement que j'ai besoin de dénicher. Appréciez l'aide! – PAS

1

Il s'avère que mon erreur était assez simple. J'utilise strings.xml pour stocker le nom de la case à cocher et déréférencer cela à l'exécution comme nous le faisons avec les labels, etc. Eh bien, la valeur que cela permettait d'avoir un espace dedans, bien sûr, ça ne l'était pas. t travail.

L'entrée de chaîne était errante quelque chose comme ceci:

<string name="key_vibrate_pref">Vibrate preference</string> 

Et il aurait dû être quelque chose comme ceci:

<string name="key_vibrate_pref">ckPrefVibrate</string> 

DOH !!!!

+0

Avait le même diagnostic, mais un traitement légèrement différent. L'ajouter ici pour que n'importe qui ait fait la même erreur, il peut se sentir aussi stupide que moi :)) J'ai formé l'arbre de préférences par programme et j'ai oublié d'appeler setKey(). – dimsuz