0

我不明白这里发生了什么。我有一个正确设置了条目和条目值的 ListPreference。

当我进入首选项活动并更改它成功工作的值时(我添加了一个 Toast 以在更改测试选项后输出值)。

但是当我执行以下操作来比较它时,它总是在我每次更改它时执行 else 语句,即使像上面我更改 ListPreference 并且值为“bluesky”时它仍然无法执行正确的 if 语句。

这是我用来检查 onResume() 中 ListPreference 值的代码:

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

Toasts 在那里,所以我可以仔细检查哪个语句被执行,它似乎总是另一个。

我是不是过得很糟糕,出了什么问题?

4

1 回答 1

1

For starters never compare Strings like this backgroundPref == "bluesky" should be backgroundPref.equals("bluesky");

于 2010-10-12T21:24:30.167 回答