2013-12-19 48 views
0

因爲我沒有找到任何有用的東西,或者是在我的問題上回復的內容,我想知道是否有可能檢查sharedpreference關鍵字是否包含常量字符串。檢查sharedpreferences關鍵字是否包含常量

Ex。

存儲在我的共享首選項:

<string name="aaa_key1">Value</string> 
<string name="aaa_key2">Value</string> 
<string name="aaa_key3">Value</string> 
<string name="bbb_key1">Value</string> 
<string name="bbb_key2">Value</string> 
<string name="bbb_key3">Value</string> 

我需要添加一個檢查,以便: 如果首選項包含AAA:做一些事情,如果 首選項包含BBB:做別的事情。

編輯說明: 我的應用程序中有一些方法根據用戶操作生成sharedpreferences鍵+字符串。所有的鍵都基於用戶執行的動作而得到一個常量,因此如果鍵包含常量(即aaa_key1或bbb_key1),我需要調用其他一些方法。

這可能嗎? 在此先感謝

+1

我認爲你是以錯誤的方式引用共享首選。你可以參考這個示例代碼:https://github.com/rakeeb11/simple-shared-preferences ...當你在一個單獨的類中設置sharedpreference時,它總是更容易。 –

+0

Nono,我正在引用它...我的應用程序中存儲了一些基於用戶操作生成的字符串存儲sharedprefrences的方法。這些字符串起初得到了一個常量,所以我需要檢查存儲的字符串是否有這個常量並執行其他方法 – iGio90

+0

保存到sharedpreferences時沒有使用任何鍵來標識它們的值?因爲使用共享首選項,您應該分配密鑰。 –

回答

2

您可能會發現這有幫助,以獲得一個按鍵列表使用以下方法。

你可以做的是使用SharedPreferences的getAll()方法和 獲得Map中的所有值,然後你可以輕鬆地迭代。

Map<String,?> keys = prefs.getAll(); 

    for(Map.Entry<String,?> entry : keys.entrySet()){ 
       Log.d("map values",entry.getKey() + ": " + 
             entry.getValue().toString()); 
     } 

欲瞭解更多信息檢查這個原來的職位link

+0

我愛你mate <3 – iGio90

+0

我很高興知道我可以幫助你!!! – DroidBot

1

如果你只是想單獨值沒有必要把他們都弄到 - 在這種情況下,正確的答案是prefs.contains(String)

if (prefs.contains("aaa") 
    // aaa 
else if (prefs.contains("bbb") 
    // bbb