2011-06-23 3 views
2

J'essaye de créer un nouveau CheckBoxPreference sous un PreferenceGroup pour l'affichage des balises. Le plan est d'ajouter les balises avec le code comme ceci:Créer une nouvelle préférence et la conserver?

for(Tag t : tags) { 
     pref = new CheckBoxPreference(FoodhunterCredentials.this); 
     boolean isChecked = wasChecked(t.getName()); 

     pref.setTitle(t.getName()); 
     pref.setSummary(t.getDescription()); 
     pref.setChecked(isChecked); 
     pref.setPersistent(true); 

     Log.d("Credentials", String.format("Adding checkbox %s -%schecked", t, isChecked ? " " : " not ")); 

     tagsGroup.addPreference(pref); 
    } 

Mais après la fermeture de l'activité, les nouvelles cases à cocher ont disparu. Existe-t-il un moyen de conserver les préférences nouvellement créées? Pour être clair: il ne s'agit pas de stocker une nouvelle valeur dans une préférence définie, mais de stocker une nouvelle préférence créée.

Répondre

1

Vous pouvez utiliser DB pour stocker tous vos tags (c'est préférable).

Ou, si vous ne voulez pas utiliser DB pour une raison quelconque, vous pouvez pirater avec SharedPreferneces dans une prochaine manière:

  1. Créer préférence une chaîne vide nommée « tags » (cela ne devrait pas être visible dans votre PréférenceActivité).
  2. Lorsque l'utilisateur ajoute une nouvelle balise, vous ajouterez le nom de tag à la préférence de chaîne "tags" et l'enregistrerez.

Par exemple, votre chaîne "tags" peut ressembler à "java, android, aide, europe". Vous devrez effectuer des vérifications de duplication et vous analyser vous-même. En effet, vous devrez remplir automatiquement votre PreferenceScreen en onCreate() avec CheckBoxPreference pour chaque tag, mais vous savez déjà comment procéder.


Oui, et dans le niveau de l'API 11 (Android 3.0) et plus vous pouvez utiliser Cordage dans SharedPrefernces. Voir getStringSet et putStringSet pour plus de détails.

+0

J'utilise une préférence par défaut et j'ouvre une boîte de dialogue personnalisée pour les cases à cocher. Ce n'est pas exactement ce que je veux mais ça fait l'affaire. – schlingel

1

Vous n'êtes pas en mesure de modifier les fichiers de mise en page XML de manière problématique. Vous pouvez stocker le fait que vous avez une case à cocher supplémentaire dans le SharedPreferences or Database mais il n'y a pas une façon super-propre de faire ce que vous voulez.

Questions connexes