0

我有一个非常奇怪的。我有 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);
4

1 回答 1

2

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

SharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { ... };onCreate(). 我将其更改为它自己的单独方法,现在它似乎工作正常。我改变了两个项目以这种方式工作,以保持一致。

于 2012-10-30T13:07:15.960 回答