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