2013-12-19 19 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