2014-06-19 5 views
0

J'essaie d'enregistrer deux valeurs sous une clé pour les préférences partagées dans Android. La raison pour laquelle je veux faire ceci est que je peux vérifier la valeur d'une chaîne, puis la remplacer. Par exemple, je souhaite que la préférence partagée ait (key1, StringA, StringB). Dans mon programme, je veux vérifier si un textView correspond à StringA, et si c'est le cas, le remplacer par StringB. Existe-t-il un moyen de le faire avec des préférences partagées? Si oui, comment pourrais-je implémenter stocker deux piqûres sous une clé? Sinon, quelle est la meilleure façon de le faire? Merci pour toute aide.Plusieurs valeurs dans SharedPreferences

, je vérifie Jusqu'à présent, la valeur textView, et le remplacer par la préférence partagée comme ça ...

if (sharedpreferences.contains(Name)) { 
     if (sharedpreferences.getString(Name, "").equals(stringname.getText())) { 
      name.setText(sharedpreferences.getString(Name, "")); 
      //I want to replace name(which is the textView) with StringB instead. 
     } 
     else { 
      name.setText("Didn't Match"); 
     } 
    } 

Donc, ce pourquoi je veux utiliser deux valeurs de cette façon, l'utilisateur peut remplacer un spécifique TextView qu'ils désirent dans une autre chaîne.

+3

Ajoutez les deux valeurs séparées par des virgules à la clé. Ensuite, utilisez des manipulations de chaînes pour obtenir les valeurs et faire votre logique. –

+0

Alors juste ajouter une autre valeur après la première avec une virgule? Quel genre de manipulations de cordes? Est-ce que je les mettrais dans un tableau ou ..? – mtorres

+1

Si vous utilisez une chaîne séparée par des virgules, veillez à ce que l'une des chaînes d'origine contienne des virgules. Vous devez vous échapper/les oublier. – matiash

Répondre

1

Vous ne pouvez pas faire cela car il écrasera les valeurs si vous utilisez la même clé n'importe où.

Mais oui, il existe une alternative pour laquelle vous pouvez stocker plusieurs valeurs de chaîne dans une seule clé de préférence, chaque valeur étant séparée par une virgule. Ensuite, vous pouvez utiliser convertStringToArray pour le convertir en tableau de chaînes.

Je ne vous suggérerais pas de le faire car pourquoi écrire plus de code juste pour stocker et manipuler des valeurs pour une seule touche, au lieu de stocker des valeurs pour différentes clés et faire la comparaison avec des valeurs séparées.

+0

Voir l'explication ci-dessus dans la réponse de Joseph pour une explication de pourquoi j'ai besoin de faire cela. Je pense que convertStringToArray pourrait fonctionner, mais comment pourrais-je l'implémenter en utilisant mon code ci-dessus? – mtorres

+0

@ user3124083 ok, je l'ai eu. Essayez de mettre en place des trucs avec l'alternative que j'ai mentionnée ci-dessus. –

1

Je ne vois pas le point, puisque vous avez mentionné que vous faites de cette façon est juste parce que

La raison pour laquelle je veux faire est pour que je puisse vérifier une valeur d'un chaîne, puis remplacez-le.

Vous vous imposez une contrainte inutile. Pourquoi ne pas simplement stocker les chaînes sous différentes clés?

+0

J'utilise ceci afin de pouvoir ajouter des surnoms pour des chaînes spécifiques. Ainsi, le service met à jour un nom (A) dans la vue texte et l'utilisateur a un surnom (B) pour cette personne, au lieu que le nom d'origine (A) soit affiché dans la vue, le pseudo (B) est affiché. @josephus – mtorres

+0

dans ce cas, je vous recommande d'ajouter une certaine logique dans votre nom de clé à la place. par exemple vous pouvez avoir un préfixe "surnom-" que vous ajoutez à votre clé normale. – josephus

+0

une autre façon serait d'utiliser une préférence partagée différente pour stocker les surnoms. De cette façon, vous pouvez utiliser la même clé (donc pas de contrainte sur le modèle de chaîne) – josephus