我想制作一个进度图,玩家将看到他最新的5场比赛历史得分。我的问题是我希望将其保存在SharedpPeference
最新的5场比赛得分上,然后将其转移到加法Array
。这将是这样的:
int[] x = { 1,2,3,4,5 };
int[] Addition = new int [x.length];
是否可以使用SharedPreference
?我如何以FIFO方式制作它?因为我只需要最新的5场比赛得分?有人可以帮我解决这种逻辑吗?
答案 0 :(得分:0)
您无法在Arrays
中存储SharedPreferences
。
您可以存储名为scores
的{{1}}。然后,在其中,使用String
存储每个游戏。
int
然后当您创建SharedPreferences prefs = getSharedPrefs("score");
以保存分数时创建每个
Editor
然后当有第六个游戏时,您需要移除第一个游戏或使用算法来获取最后一个游戏。
但是,在数据库或文件中存储/检索这些内容可能会更好/更容易。
答案 1 :(得分:0)
使用此:
int x[] = { 1,2,3,4,5 };
String willSave = "";
for(int i=0 ; i<x.length ; i++){
willSave += String.valueOf(x[i]) + ";";
}
saveString(getBaseContext(), "Values", "LastScores", willSave);
// Checking the last cached values
String cachedValues = loadString(getBaseContext(), "Values", "LastScores");
String splitted[] = cachedValues.split(";");
int lastValues[] = new int[splitted.length];
for(int i=0 ; i<splitted.length ; i++){
lastValues[i] = Integer.parseInt(splitted[i]);
}
函数saveString
和loadString
:
public void saveString(Context c, String prefName, String key, String value){
SharedPreferences settings = c.getSharedPreferences(prefName, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
editor.commit();
}
public String loadString(Context c, String prefName, String key){
SharedPreferences settings = c.getSharedPreferences(prefName, 0);
return new String(settings.getString(key, ""));
}
此代码执行此操作:首先将int
数组转换为String
,因为您无法将数组保存到sharedPrefs。然后再将此缓存的String
转换为int
数组。