Android registerOnSharedPreferenceChangeListener()不起作用

时间:2012-10-26 20:23:28

标签: android sharedpreferences

我有一个非常奇怪的人。我有2个应用程序,一个免费应用程序和一个付费应用程序,两者使用基本相同的代码,但有些代码在免费应用程序中显示广告。

由于某种原因,registerOnSharedPreferenceChangeListener()不在免费版本中运行。什么甚至更奇怪...如果我在该行代码中放置一个断点,并运行调试器,它会很好地注册。没有那里的断点,它永远不会注册。知道是什么会导致这个吗?也许项目设置有所不同?我一直在努力解决这个问题!

代码:

SharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
        @Override
        public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
            if(key.equals(AUTORESPONSEGLOBAL))
            {
                ARCheckBox.setChecked(settings.getBoolean(AUTORESPONSEGLOBAL, false));
                if(ARCheckBox.isChecked())
                {
                    //green 0xaarrggbb a=alpha
                    AR_label.setTextColor(0xff00ff00);
                }
                else
                {
                    //red
                    AR_label.setTextColor(0xffff0000);
                }
            }
            if(key.equals(CLOCK24))
            {
                updateTime();
            }
        }
    };

    settings.registerOnSharedPreferenceChangeListener(prefsListener);

1 个答案:

答案 0 :(得分:2)

好吧,我仍然不确定为什么它在一个项目中工作而不是另一个项目...但我修复了它。

我在SharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { ... };声明了onCreate()。我把它改成了它自己独立的方法,现在似乎工作正常。我改变了这两个项目,以保持一致。