我有一个非常奇怪的人。我有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);
答案 0 :(得分:2)
好吧,我仍然不确定为什么它在一个项目中工作而不是另一个项目...但我修复了它。
我在SharedPreferences.OnSharedPreferenceChangeListener prefsListener = new SharedPreferences.OnSharedPreferenceChangeListener() { ... };
声明了onCreate()
。我把它改成了它自己独立的方法,现在似乎工作正常。我改变了这两个项目,以保持一致。