Je travaille sur SharedPreferences et dans mon programme, j'ai une variable statique finale pour le nom et l'adresse e-mail comme

 public static final String PREF_NAME = "name";
 public static final String PREF_EMAIL = "email";

Après avoir initialisé mon objet SharedPreferences,

  SharedPreferences sPref = this.getSharedPreferences("com.vivid.sharedprefrences",Context.MODE_PRIVATE);

Je change la valeur des champs constants en les remplaçant par le nom et l'adresse e-mail saisis par l'utilisateur

 sEditor.putString(PREF_NAME,name);
    sEditor.putString(PREF_EMAIL,email);
    sEditor.commit();

Mais selon les autres réponses sur le débordement de pile a static final variable value cannot be changed once initialized Mais ici, la valeur d'un champ final statique change lorsque j'insère le nom et l'adresse e-mail dans PREF_NAME et PREF_EMAIL Comment est-ce possible?

-4
Android 16 août 2017 à 10:15

2 réponses

Meilleure réponse

Lorsque vous faites cela sEditor.putString(PREF_EMAIL,email);, le premier paramètre est la clé et non la valeur. Donc ce qui se passe, c'est dans votre préférence que la valeur de l'email est enregistrée pour la CLE PREF_EMAIL.

Par conséquent, la clé ne change jamais. Votre préférence partagée est le Key-ValuePair type de collections. La valeur de String PREF_EMAIL est ce que vous avez défini dans la ligne - public static final String PREF_EMAIL = "email"; c'est-à-dire email et restera toujours la même.

La valeur de préférence enregistrée avec la clé d'identifiant en tant que PREF_EMAIL change.

Afin que votre préférence partagée soit enregistrée sous -

email = "email@sample.com" // ceci n'est qu'un exemple de représentation.

0
Kapil G 16 août 2017 à 07:18

C'est une clé sharedPrefence donc fondamentalement, vous modifiez la valeur par rapport à la clé et non à la variable finale statique

0
akshay_shahane 16 août 2017 à 07:18