2010-10-12 8 views
0

Je ne comprends pas ce qui se passe ici. J'ai une ListPreference avec les entrées et les entryValues ​​correctement définies. Lorsque je vais dans l'activité prefernces et change la valeur, il fonctionne avec succès (j'ai ajouté un Toast pour sortir la valeur après avoir changé l'option pour tester). Mais quand je fais ce qui suit pour le comparer, il exécute toujours l'état else quand je le change à chaque fois, même comme ci-dessus quand j'ai changé ListPreference et que la valeur était "bluesky" .Développement Android: ListPreference Trouble

Voici le code que j'utilise pour vérifier la valeur de la ListPreference dans le onResume():

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this) 
String backgroundPref = prefs.getString("backgroundPref", ""); 

    if(backgroundPref == "bluesky"){ 
    mainLayout.setBackgroundResource(R.drawable.bluesky); 
    Toast.makeText(getBaseContext(), "Blue Sky", Toast.LENGTH_SHORT).show(); 
    }else if(backgroundPref == "sky"){ 
    mainLayout.setBackgroundResource(R.drawable.sky); 
    Toast.makeText(getBaseContext(), "Sky", Toast.LENGTH_SHORT).show(); 
    }else{ 
    mainLayout.setBackgroundResource(R.drawable.sunsetscene); 
    Toast.makeText(getBaseContext(), "Sunset Scene", Toast.LENGTH_SHORT).show(); 
    } 

Les Toasts sont là donc je peux vérifier quelle déclaration est exécuté, et il semble toujours être le un autre.

Est-ce que j'ai une mauvaise journée et que je me trompe?

Répondre

1

Pour commencer comparer jamais des chaînes de cette backgroundPref == "bluesky" devrait être backgroundPref.equals("bluesky");

+0

Merci, résolu mon problème. Je n'ai jamais su que vous étiez supposé le faire comme ça :( – AlexPriceAP

+0

NP Tous les objets, y compris String, doivent être comparés via la méthode equals, et c'est une bonne pratique d'implémenter cette méthode dans vos objets. –