Frage

Ich verstehe nicht, was hier vor sich geht. Ich habe einen ListPreference mit den Einträgen und entryValues ??richtig eingestellt ist.

Als ich in der prefernces Aktivität gehen und ändern Sie den Wert es funktioniert erfolgreich (Ich habe einen Toast zur Ausgabe des Wert nach der Option Test ändern).

Aber wenn ich die folgende es zu vergleichen, führt sie immer die sonst statment, wenn ich es ändern, jedes Mal, auch wie oben, wenn ich die ListPreference geändert und der Wert war „Bluesky“ es immer noch nicht die richtigen if-Anweisung auszuführen.

Hier ist der Code, den ich verwende, um den Wert des ListPreference im onResume () zu überprüfen:

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();
  }

Die Toasts sind dort so kann ich nochmal genau überprüfen, welche Anweisung ausgeführt wird, und es scheint immer die anderen zu sein.

Bin ich einen schlechten Tag und etwas falsch zu bekommen?

War es hilfreich?

Lösung

Für den Anfang nie Strings vergleichen wie diese backgroundPref == "bluesky" sollte backgroundPref.equals("bluesky");

sein
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top