【问题标题】:check if sharedpreferences key contains a constant检查 sharedpreferences 键是否包含常量
【发布时间】:2014-01-07 14:20:39
【问题描述】:

因为我没有找到任何有用的东西,或者什么东西可以回答我的问题,所以我想知道是否可以检查共享首选项键是否包含常量字符串。

例如。

存储在我的共享首选项中:

<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>

我需要添加一张支票: 如果 prefs 包含 aaa: 做某事, 如果 prefs 包含 bbb:做其他事情。

编辑解释: 我的应用程序上有一些方法可以根据用户操作生成共享首选项键+字符串。根据用户执行的操作,所有键都有一个常量,因此如果键包含常量(即 aaa_key1 或 bbb_key1),我需要调用其他一些方法

这可能吗? 提前致谢

【问题讨论】:

  • 我认为您以错误的方式引用 sharedpreferences。您可以将此称为示例代码:github.com/rakeeb11/simple-shared-preferences ...当您在单独的类中设置 sharedpreference 时,它​​总是更容易。
  • Nono,我指的是正确的......我在我的应用程序上找到了一些方法,该方法根据用户操作生成的字符串存储 sharedprefrences。这些字符串一开始有一个常量,所以我需要检查存储的字符串是否有这个常量并执行一些其他方法
  • 保存到 sharedpreferences 时,您没有使用任何键来识别它们的值吗?因为使用 sharedpreferences 你应该分配键。

标签: android sharedpreferences


【解决方案1】:

您可能会发现这很有帮助,使用以下方法获取键列表。

你可以做的是使用 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

【讨论】:

    【解决方案2】:

    如果您只想要单独的值,无需全部获取 - 在这种情况下,正确答案是 prefs.contains(String)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 2015-01-30
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多