Pregunta

No entiendo lo que está pasando aquí. Tengo un ListPreference con las entradas y entryValues ??establecidos correctamente.

Cuando voy en la actividad prefernces y cambiar el valor funciona con éxito (I añadió una tostada a la salida el valor después de cambiar la opción de prueba).

Pero cuando lo haga lo siguiente para compararlo, siempre ejecuta la DECLARACIÓN persona cuando lo cambio cada vez, incluso como la de arriba, cuando he cambiado el ListPreference y el valor era "bluesky" todavía no se pudo ejecutar la correcta instrucción if.

Este es el código que utilizo para comprobar el valor de la ListPreference en el 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();
  }

Las tostadas están allí, así que puede doble Vea qué afirmación es ejecutado, y siempre parece ser el que más.

¿Estoy teniendo un mal día y conseguir algo mal?

¿Fue útil?

Solución

Para empezar nunca se comparan cadenas como éste backgroundPref == "bluesky" debe ser backgroundPref.equals("bluesky");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top