2013-02-25 69 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()); 
}