SharedPreference ANdroid Studio

- - Dernière réponse : Twinuts
Messages postés
5321
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
1 février 2019
- 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
5321
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
1 février 2019
97
0
Merci
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));


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 ?
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 ?
Twinuts
Messages postés
5321
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
1 février 2019
97 -
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.
Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.