我基本上已经创建了一个ListPreference,用户可以从中选择选项。他们选择了一个可用选项之后,该应用将返回到主活动,并且背景图像将相应地更改,但是,看来我的应用无法检测到首选项的更改并更改了背景图像。有人请指教?谢谢!***我的主要活动恢复后,下面的代码片段显示,它如何检测到偏好的变化并改变背景图像。
protected void onResume()
{
super.onResume();
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(key.equals("listPrefwall")){
tv.setText(prefs.getString("listPrefwall", "ondon"));
if(prefs.getString("listPrefwall", "ondon")=="ondon")
{
getWindow().setBackgroundDrawableResource(R.drawable.ondon);
tv.setText("testing");
}
else if(prefs.getString("listPrefwall", "ondon")=="japan")
{
getWindow().setBackgroundDrawableResource(R.drawable.japan);
tv.setText("pivot");
}
}
}
};
settings.registerOnSharedPreferenceChangeListener((OnSharedPreferenceChangeListener) listener);
}
最佳答案
也许您的“设置”成员保留了缓存的值?尝试使用传递给您的侦听器的“ prefs”对象。