【问题标题】:SharedPreferences return only default valueSharedPreferences 仅返回默认值
【发布时间】:2012-12-12 14:02:22
【问题描述】:

所以我没有创建数据库,而是使用SharedPreference 存储数据。

我的代码如下:

   SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
        editor.putInt("favid"+id, 1);
        editor.commit();
        Toast.makeText(getApplicationContext(), "Select as favorite", Toast.LENGTH_SHORT).show();

现在我想检索该数据,所以我在其他活动中使用了以下代码:

   strFav = new ArrayList<Integer>();

    if(strFav.size()>0)
        strFav.clear();
    SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
    for (int i = 1; i < 19; i++) {
        int favid = prefs.getInt("favid"+i, -1);
        if (favid != -1) 
        {
          strFav.add(i);
        }
    }

在检索数据时,我得到的所有值都是-1

任何机构可以帮助我为什么会发生这种情况?我已将许多条目提交为 1,但我仍然得到所有条目的 -1 结果。

【问题讨论】:

    标签: android android-intent sharedpreferences


    【解决方案1】:

    docs关于getPrefernces方法:

    检索一个 SharedPreferences 对象以访问此活动私有的首选项。

    因此,如果您想在活动之间共享偏好,您应该使用指定名称的getSharedPreferences

    【讨论】:

    • 但是我也用过“MODE_WORLD_WRITEABLE”,但这样就没有完成:(
    • 如果您只在您的应用中使用此首选项 - 您可以使用 MODE_PRIVATE
    【解决方案2】:

    您是否在一个应用的两个不同活动中使用共享偏好?

    也尝试指定首选项名称,或者使用一些管理器来处理所有首选项,这一切都解释了here

    【讨论】:

    • 非常感谢 dilix 执行 SharedPreferences prefs = getSharedPreferences("abc", 0);问题解决了
    【解决方案3】:
    editor.putInt("favid"+id, 1);
    

    id 等于 0 是怎么回事? 这里你从 1 开始阅读

     for (int i = 1; i < 19; i++) {
    

    【讨论】:

    • 你确定 editor.putInt("favid"+id, 1);执行 put 时 id 值是 != 0?
    • 这对我来说没有意义。
    猜你喜欢
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多