Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SharedReferences仅返回默认值_Android_Android Intent_Sharedpreferences - Fatal编程技术网

Android SharedReferences仅返回默认值

Android SharedReferences仅返回默认值,android,android-intent,sharedpreferences,Android,Android Intent,Sharedpreferences,因此,我没有创建数据库,而是使用SharedReference存储数据 我的代码如下: SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putInt("favid"+id, 1); editor.commit(); Toast.makeText(getApplicationContext(), "Select as favorite",

因此,我没有创建数据库,而是使用
SharedReference
存储数据

我的代码如下:

   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);
        }
    }
strFav=newarraylist();
如果(strFav.size()>0)
strFav.clear();
SharedReferences prefs=getPreferences(模式\私有);
对于(int i=1;i<19;i++){
int favid=prefs.getInt(“favid”+i,-1);
如果(favid!=-1)
{
补充第(一)款;
}
}
在检索数据时,我得到的所有值都是
-1

有人能帮我解释为什么会发生这种事吗?我已经提交了许多条目作为1,但我仍然得到所有条目的
-1
结果

editor.putInt("favid"+id, 1);
id等于0是什么意思? 这是你从1开始读的

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

您是否在一个应用程序的两个不同活动中使用共享首选项

另外,请尝试指定首选项名称,或使用一些管理器来处理所有首选项,所有这些都已解释

请参阅关于
getpreferences
方法:

检索SharedReferences对象以访问此活动专用的首选项


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

您确定执行put时editor.putin(“favid”+id,1);id值为!=0吗?这对我来说没有意义。非常感谢您通过执行SharedPreferences prefs=getSharedPreferences(“abc”,0);问题已经解决,但我也使用了“MODE_WORLD_WRITEABLE”(模式世界可写),但没有这样做:(如果你只在应用程序中使用此首选项,你可以使用MODE_PRIVATE