Eug*_*mak 76 android sharedpreferences
SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:
PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)
返回true
Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)
返回空地图
怎么了?如何获取所有共享首选项的列表?
Lal*_*ani 174
您可以做的是使用getAll()方法SharedPreferences并获取所有值Map<String,?>,然后您可以轻松地迭代.
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ": " +
entry.getValue().toString());
}
Run Code Online (Sandbox Code Playgroud)
您可以查看实施情况.PrefUtil.java's dump()
我认为这个问题与原因有关
PreferenceManager.getDefaultSharedPreferences(this).getAll()
Run Code Online (Sandbox Code Playgroud)
返回一个空的/矛盾的地图,而不是如何迭代标准的Java地图.在Android的文档是不是真的晶莹剔透这是怎么回事这里,但基本上这似乎是有史以来第一次调用到
PreferenceManager.setDefaultValues(this, R.xml.preferences,false)
Run Code Online (Sandbox Code Playgroud)
- 当您启动应用程序时,您应该调用初始化首选项 - 创建某种缓存版本的首选项,这会导致您对xml首选项文件的未来更改处理不一致,即导致不匹配在你的问题中描述.
要重置此"缓存实体",请按照以下步骤操作(您可以从上面的链接中找到):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().clear();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41919 次 |
| 最近记录: |