2012-10-22 4 views
-1

Je suis un développement de noob à android et j'essaie d'utiliser des préférences partagées pour obtenir des valeurs pour un double pendant onCreate. Cependant, mon code pour ce faire semble fonctionner seulement la première fois que je redémarre mon application. Au cours des redémarrages suivants, le code ne fonctionne pas et ignore la partie if/else de mon code. C'est très frustrant car si ça marche une fois ça devrait marcher à chaque fois. Toute aide est grandement appréciée.Pourquoi mon instruction if/else ne fonctionne-t-elle pas?

public void LoadPreferences(){ 
          double portfoliocurrency1 = null; 
      SharedPreferences portfoliopreferences = getPreferences(MODE_PRIVATE); 
      String isuser1created = portfoliopreferences.getString("U1C", ""); 
      if(isuser1created.equals("yes")){   
       String savedportfolioname = portfoliopreferences.getString("PN1", ""); 
       String saveddenomination = portfoliopreferences.getString("DN1", ""); 
       String savedporfoliocurrency = portfoliopreferences.getString("PC1", ""); //<--Always either "usd", "inr", or "eur". 
       Log.d("test","SPConLoad=" + savedporfoliocurrency); //<--Returns correct value on every restart. 
       Log.d("test","USD=" + currencyUSD); //<--Returns correct value on every restart. 
       Log.d("test","EUR=" + currencyEUR); //<--Returns correct value on every restart. 
       pn1 = savedportfolioname; 
       denomination1 = saveddenomination; 
       if(savedporfoliocurrency=="usd"){ //<--If/else statement only works on first restart. For some reason it is skipped on subsequent restarts. 
        portfoliocurrency1 = currencyUSD; 
        Log.d("test","PC1USD=" + currencyUSD); //<--Returns correct value on first restart. 
       }else if(savedporfoliocurrency=="eur"){ 
        portfoliocurrency1 = currencyEUR; 
        Log.d("test","PC1EUR=" + currencyEUR); //<--Returns correct value on first restart. 
       }else if(savedporfoliocurrency=="inr"){ 
        portfoliocurrency1 = currencyINR; //<--Returns correct value on first restart. 
       } 
       Log.d("test","PC1onLoad=" + portfoliocurrency1); //<-- Only returns correct value during first restart. Always returns null on subsequent restarts. 
       } 
+0

jetez un oeil à http://stackoverflow.com/questions/767372/java-string-equals-versus – vfcosta

Répondre

3

Vous devez utiliser String.equals() ici, pas == .

if(savedporfoliocurrency=="usd"){ 

Voir, par exemple, la question SO Java String.equals versus ==.

==, comme vous l'avez trouvé, fonctionnera parfois, mais ce n'est pas ce que vous voulez faire ici. Vous voulez vérifier le contenu, pas l'emplacement où ils sont stockés.

+0

Merci. Juste essayé et ça fonctionne comme un charme. J'avais passé la dernière heure à essayer de comprendre ce qui n'allait pas. Merci encore. –

1

Change:

savedporfoliocurrency=="usd" 

à

savedporfoliocurrency.equals("usd") 

et similaires manar fix autre chaîne compare

Questions connexes