我的应用程序出现了奇怪的问题。 我已经设置了一个SharedPreference,就像这个
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
flag = prefs.getBoolean("handle_calls", false);
if (flag) {
SharedPreferences.Editor editor = prefs.edit();
editor.clear();
editor.putBoolean("checkFlag", true);
editor.commit();
}
它在几天前工作正常,但是现在这段代码工作正常但是当我尝试在我的SmsReceiver类SharedPreferences
中读取这些首选项时,不读取这些值并读取默认值(false)...有时它工作,大多数时候它根本不工作!
以下是我阅读SharedPreferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SmsManager sms = SmsManager.getDefault();
//flag = prefs.getBoolean("handle_calls", false);
checkFlag = prefs.getBoolean("checkFlag", false);
checkDecisionFlag = prefs.getBoolean("checkDecisionFlag", false);
此checkDecisionFlag
工作正常,但checkFlag采用默认值。
真的很生气!请帮助!
答案 0 :(得分:2)
删除editor.clear();从条件来看。如清除将清除SharedPreference中的所有数据。
if (flag) {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("checkFlag", true);
editor.commit();
}
答案 1 :(得分:1)
解决了!
这段代码很好,而问题是以生命周期为导向。我依赖了另一个SharedPreference
。那一次又一次变得虚假。
答案 2 :(得分:0)
我想你想在第一个代码示例的第三行使用if(!flag)( not flag)。