我目前正在尝试实施SharedPreferences
来保存和加载ArrayList
个对象。我有一个按钮设置为saveFood()
,另一个按钮调用loadFood()
。
public void saveFood(View view) {
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
text = (TextView)(findViewById(R.id.feedback));
editor.putInt("size", foodList.size());
for (int y=0; y<foodList.size(); y++){
editor.putInt(Integer.toString(y), foodList.get(y).getItemIdInt());
editor.putString(Integer.toString(y)+"a", foodList.get(y).getItemName());
editor.putInt(Integer.toString(y)+"b", foodList.get(y).getTime());
}
text.setText("saved");
}
public void loadFood(View view){
int idNum = 0;
int time = 0;
int size = 0;
String itemName;
text = (TextView)(findViewById(R.id.feedback));
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
size = prefs.getInt("size", -1);
if(size != -1){
for (int x=0; x<size; x++){
idNum = prefs.getInt(Integer.toString(x), -1);
itemName = prefs.getString(Integer.toString(x)+"a", null);
time = prefs.getInt(Integer.toString(x)+"a", -1);
ObjectItem newFood = new ObjectItem(idNum, itemName, time);
foodList.add(newFood);
}
text.setText("load successful");
}
else text.setText("error");
}
当程序运行并单击“保存”按钮时,保存的消息将按预期显示。但是,每次单击加载按钮时,我都会收到错误反馈(由于某种原因,getInt返回-1)。
有人可以解释为什么会这样吗?
答案 0 :(得分:1)
您永远不会将更改提交给SharedPreferences
。试试这个:
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
text = (TextView)(findViewById(R.id.feedback));
editor.putInt("size", foodList.size());
for (int y=0; y<foodList.size(); y++){
editor.putInt(Integer.toString(y), foodList.get(y).getItemIdInt());
editor.putString(Integer.toString(y)+"a", foodList.get(y).getItemName());
editor.putInt(Integer.toString(y)+"b", foodList.get(y).getTime());
}
editor.commit(); // Save the changes