Domanda

Non capisco cosa sta succedendo qui. Ho un ListPreference con le voci e le entryValues ??correttamente impostati.

Quando vado nell'attività prefernces e modificare il valore che funziona con successo (ho aggiunto un brindisi per l'emissione del valore dopo aver cambiato la possibilità di test).

Ma quando faccio la seguente per confrontarlo, viene sempre eseguito lo statment altro quando lo cambio ogni volta, anche come sopra quando ho cambiato il ListPreference e il valore era "Bluesky" che ancora non è riuscito ad eseguire il corretto if.

Ecco il codice che uso per controllare il valore della ListPreference nel 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();
  }

I brindisi sono lì così posso doppio controllo che dichiarazione viene eseguito, e sembra sempre di essere l'altro.

Sono io una brutta giornata e ottenere qualcosa che non va?

È stato utile?

Soluzione

Per cominciare mai confrontare le stringhe come questo backgroundPref == "bluesky" dovrebbe essere backgroundPref.equals("bluesky");

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top