我有以下情况:
从服务更新的一项活动。进行更新时,会写入一些首选项。到目前为止一切都很好。 当活动不可见且服务决定进行更新时,我会收到通知。单击此通知将打开我希望找到以前存储的首选项的活动,但没有任何内容。
我看到点击通知时调用了活动的onCreate()方法,这就是我创建包含首选项的arrayadapter的地方,不幸的是,首选项不存在。
请记住:
我在更新偏好时使用commit()
我以这种方式访问SharedPreferences(在阅读和写作时):
SharedPreferences sharedPref = context.getSharedPreferences( SHARED_PREF_FILE,Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);
其中SHARED_PREF_FILE
是常量。调试时我发现sharedPref
对象指向同一个xml文件(/data/data/domxml),所以这应该没问题。
祝你好运
编辑(部分代码):
我有一个类(PrefManager
)来管理SharedPreferences:
public static Set<String> retrieveData(Context context) {
SharedPreferences sharedPref = context.getSharedPreferences(
SHARED_PREF_FILE, Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);
return sharedPref.getStringSet(MY_KEY,
new HashSet<String>());
}
在Activity的onCreate()中我有这个:
myAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, PrefManager.retrieveData(this));
答案 0 :(得分:0)
回答我自己的问题,万一有人偶然发现:
我能够通过将其添加到用于创建通知的意图来使其工作:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);