2015-10-07 86 views
0

所以我有一些共享偏好:如何知道我的共享偏好已經有一個特定的值

public SharedPreferences prefs = this.getSharedPreferences("com.example.me1jmo.insult_generator", Context.MODE_PRIVATE); 

而且我添加新鍵值對,以它像這樣:

int number = prefs.getAll().size(); 
     int newkey = ++number; 
     String newkeystring = "" + newkey; 
     prefs.edit().putString(newkeystring,saved).commit(); 

然而我不想添加已添加的字符串。所以我想檢查我添加的字符串在我的共享首選項中是否已經是一個值。什麼是最好的方式去做這件事?

(或我能不能轉我的價值觀和按鍵周圍,並檢查我還沒有在我的共享偏好那個鍵)

+1

的可能的複製[安卓:檢查是否值出現在共享偏好(HTTP:// stackoverflow.com/questions/8757573/android-check-if-value-is-present-in-shared-preferences) –

+0

檢查這個http://stackoverflow.com/a/17885456/1529129 –

回答

1

可以使用prefs.contains(newkeystring)檢查,如果該鍵退出的條目已經。來自documentation

檢查首選項是否包含首選項。

編輯

我的鑰匙將不存在,他們將永遠是不同的我想 知道如果我進入價值已經在首選項。 -

然後唯一的解決方案是循環並檢查值是否退出。該檢索SharedPreferences內容,您可以使用GETALL(檢查我的答案here

public boolean exits(String value) { 
    Map<String, ?> allEntries = prefA.getAll(); 
    for (Map.Entry<String, ?> entry : allEntries.entrySet()) { 
     Log.d("map values", entry.getKey() + ": " + entry.getValue().toString()); 
     if ("yourvalue".equals(entry.getValue().toString()) { 
      // the value exits; 
      return true; 
     } 
    } 
    return false; 
} 

,並調用它像exits("theValueToCheck);

+0

我的鑰匙將不存在,他們將永遠是不同的我想知道我輸入的價值是否已經在偏好中。 – James

+1

我編輯了我的答案 – Blackbelt