2013-02-25 42 views
0

在下面的代码中,我有一个方法将新的键值添加到文件“contact”中。我的问题是,如果可以创建一个方法,通过文件“contact”中的所有键的某种循环搜索特殊值,并查看其中一个值是否等于特殊值?请提供一些帮助!谢谢!搜索SharedPreference内的键和值?

String filename = "contacts"; 
SharedPreferences someInfo = getSharedPreferences(filename, 0); 

public void addSharedPref(String key, String value){ 

SharedPreferences.Editor editor = someInfo.edit(); 
editor.putString(key, value); 
editor.commit(); 
} 

回答

0

由于SharedPreference是一本字典,就没有办法使用内置的东西就像一个列表来访问它。你必须有一个索引器(名称 - 值对中的名称)才能访问内容。

你可以做的是直接访问SharedPreference文件并找到它。

我会建议你试图访问你正在寻找的SharedPreference,并在其周围添加错误处理以使用默认值。

+0

OK,但它会esaier明白,如果你可以添加代码的例子吗? – 2013-02-25 20:57:48

+0

什么是代码示例?你可以像这样手动找到这个文件http://stackoverflow.com/questions/2566430/sharedpreferences-file – Codeman 2013-02-25 21:00:45

+0

好的,但我想知道如何读取每个键值,看看其中一个键值是否等于特殊值值?这不可能吗? – 2013-02-25 21:05:09

2

使用SharePreference.getAll()返回一个Map,然后使用Map方法之一来搜索特殊值。

但是,这不是SharedPreference设计的目的。可能有更好的方法来做你想做的事情。我在任何作品中的座右铭都是“不要用螺丝刀打钉子。”

+0

好的,但是更好的方法是什么?这是我正在做的一项任务,这是老师推荐的!其任务是开发一个应用程序,使用联系人的ID标记SD卡中选定的图像。一个好的方法应该是使用图像文件路径作为键和联系人ID作为值。为什么我要搜索我的键值的原因是检查图像文件路径和联系人ID的键值是否已经在“联系人”文件中,或者是否能够将所有键值读入到列表视图中。那个怎么样?这是愚蠢的吗? Preciate替代品! – 2013-02-25 21:28:42

+0

这个任务的下一个层次是能够通过逗号分隔将ID添加到密钥图像文件路径中来添加多个ID的联系人,例如“key”,“value1,value2,value3” 。我猜这可能是复杂的,但要阅读所有这些关键字bu的值才能让它们吐出来!所有的帮助都是有保证的!我试图尽可能简单。提前致谢! :) – 2013-02-25 21:32:53

+0

我会给你的座右铭点:第 – Cjames 2014-01-22 02:45:59

0

检索共享偏好的所有值:

SharedPreferences sp= context.getSharedPreferences("contacts", Context.MODE_PRIVATE); 
    Map<String,?> keys = sp.getAll(); 
    for(Map.Entry<String,?> entry : keys.entrySet()){ 
     Log.d("map values",entry.getKey() + ": " + entry.getValue().toString()); 
}