SharedPreferences只返回默认值(SharedPreferences return o

2019-07-05 00:48发布

因此,而不是建立一个数据库,我用我存储数据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的结果对所有的人。

Answer 1:

请参见文档有关getPrefernces方法:

检索用于访问是私人这项活动喜好SharedPreferences对象。

所以,如果你想分享活动之间的喜好,你应该使用getSharedPreferences指定名称。



Answer 2:

Do you use shared preferences in two different activieties of one app ?

Also try to specify preferences name, or use some Manager to handle all preferences, all this explained here



Answer 3:

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

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

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


文章来源: SharedPreferences return only default value