SharedPreferences仅返回默认值

时间:2012-12-12 14:02:23

标签: android android-intent sharedpreferences

因此,我不是创建数据库,而是使用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个结果。

3 个答案:

答案 0 :(得分:6)

请参阅docs关于getPrefernces方法:

  

检索SharedPreferences对象,以访问此活动专用的偏好

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

答案 1 :(得分:1)

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

还尝试指定首选项名称,或者使用某个管理器来处理所有首选项,所有这些都解释为here

答案 2 :(得分:0)

editor.putInt("favid"+id, 1);

id是什么等于0? 在这里,你从1开始阅读

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