4

因此,我没有创建数据库,而是使用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了所有条目的结果。

4

3 回答 3

6

请参阅有关方法的文档getPrefernces

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

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

于 2012-12-12T14:20:13.280 回答
1

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

还尝试指定首选项名称,或使用一些管理器来处理所有首选项,所有这些都在这里解释

于 2012-12-12T14:16:09.903 回答
0
editor.putInt("favid"+id, 1);

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

 for (int i = 1; i < 19; i++) {
于 2012-12-12T14:03:27.647 回答