2010-10-12 84 views
0

我不明白這裏發生了什麼。 我有一個ListPreference正確設置條目和entryValues。Android開發:ListPreference問題

當我進入prefernces活動並更改其成功工作的值(我添加了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(); 
    } 

祝酒詞是有這樣我就可以仔細檢查該聲明被執行,它總是似乎是另一個。

我有一個糟糕的一天,有什麼問題嗎?

回答

1

對於初學者來說比較從來沒有像這樣backgroundPref == "bluesky" 字符串應該是backgroundPref.equals("bluesky");

+0

謝謝,解決我的問題。從來不知道你應該這樣做:( – AlexPriceAP 2010-10-12 21:55:09

+0

NP。所有的對象,包括String都應該通過equals方法進行比較,並且在你的對象中實現這個方法也是一個很好的習慣。 – 2010-10-12 22:34:40