我基本上创建了一个 ListPreference,用户可以从选项列表中进行选择。他们选择了可用选项之一后,应用程序将返回主 Activity ,背景图像将相应更改,但是,我的应用程序似乎无法检测到首选项的更改并更改背景图像。可以有人请建议吗?谢谢!***下面的代码 fragment 显示了我的主要 Activity 恢复后,它如何检测偏好的变化并更改背景图像。
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”对象。
关于java - Android getWindow 根据 Listpreference 设置我的 Activity 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150179/