SharedPreference ANdroid Studio

iKelSilver - 27 janv. 2019 à 21:55
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 28 janv. 2019 à 13:33
Bonsoir,

J'ai un soucis avec l'utilisation de sharedPreference.
Voci mon code :
int t1, t2;
        shared = getApplicationContext().getSharedPreferences("maSessionPoint", Context.MODE_PRIVATE);
        String mPoin_1 = shared.getString("pt_1", null);
        String mPoin_2 = shared.getString("pt_2", null);
        if (mPoin_1 == "1") {t1 = 1;} else {t1 = 0;}
        if (mPoin_2.equals(valueOf("1"))) {t2 = 1;} else {t2 = 0;}
        
        final TextView total_1 = (TextView)findViewById(R.id.total_1);
        total_1.setText(t2);

Les données arrivent bien et je les affichent très bien. Mais, lorsque je veux utiliser ces valeurs reçues dans une condition pour faire des opérations comme ci-haut, l'application échoue. Je ne comprends. L'affichage dans un TextView marche très avec les données directement de l'autre activité. Mais, il suffit que je les utilise dans une condition comme ci-haut et voilà le problème.

Aidez-moi s'il vous vous plait à résoudre ce problème.

Bref, je voulais faire une opération avec les variables : t1 et t2. Comme par exemple : t2 = t1 + t2

Merci

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 janv. 2019 à 08:16
Salut,

plusieurs choses:
1 - Tu mets en guise de valeur par défaut un "null" du coup si ta valeur n'est pas déjà présente m_Poin_1 et m_Poin_2 seront null (test que tu ne fais pas au moment de l'utilisation).
2 - En java (Android ou pas) on ne fait JAMAIS un test sur une chaîne de caractères en utilisant '=='.
3 - On fait mPoin_2.equals("1") et en aucun cas mPoin_2.equals(valueOf("1"))
4 -Utiliser getString pour y mettre des entiers ce n'est pas top, surtout quand tu as à ta disposition une méthode getInt (et d'autres genre getBoolean, getFloat, getLong)

Comme elles sont déjà enregistrées dans un autre format, si tu utilises les mêmes noms, un clear des préférences sera nécessaire.

Donc ça donne:
shared = getApplicationContext().getSharedPreferences("maSessionPoint", Context.MODE_PRIVATE);
int t1 = shared.getInt("pt_1", 0);
int t2 = shared.getInt("pt_2", 0);

final TextView total_1 = (TextView)findViewById(R.id.total_1);
total_1.setText(String.valueOf(t1));


0
Bonjour Twinuts,

Merci pour la réponse. Je ne suis pas encore satisfait. Jusqu'ici, ça va. Mon problème c'est lorsque je veux faire par exemple : t3 = t1 + t2 que l'application s'arrête.
Qu'est-ce qui peut-être à la base de ça ?
0
final TextView total_1 = (TextView)findViewById(R.id.total_1);
total_1.setText(String.valueOf(t3));

C'est ça qui fait échouer l'application. Où est l'erreur ?
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
Modifié le 28 janv. 2019 à 18:56
Salut,

Assure toi que:
- La vue total_1 est bien déclarée dans le layout utilisé par ton activity.
- Le setContentView est bien effectué AVANT l'appel du findViewById

"Où est l'erreur ?"
Regarde également le log de ton application et trace l'exception tu y verras plus clair.
0
Rejoignez-nous