我基本上已经创建了一个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”对象。

09-10 23:58