Question

Je ne comprends pas ce qui se passe ici.J'ai un ListPreference avec les entrées et entryValues correctement réglé.

Quand je vais dans le prefernces de l'activité et de modifier la valeur il fonctionne avec succès (j'ai ajouté un Toast à la sortie de la valeur après la modification de l'option de test).

Mais quand je fais la suite pour comparer, il s'exécute toujours l'autre de tresorerie quand je le change à chaque fois, même, comme ci-dessus quand j'ai changé le ListPreference et la valeur était "bluesky" il encore de l'échec de l'exécution de la corriger si l'instruction.

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 pouvez vérifier l'instruction qui est exécutée, et il semble être toujours la une.

Suis-je dans un mauvais jour, et d'obtenir quelque chose de mal?

Était-ce utile?

La solution

Pour commencer, ne jamais comparer des Chaînes de caractères comme ceci backgroundPref == "bluesky" devrait être backgroundPref.equals("bluesky");

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top