您好我正在制作一张记分卡,显示游戏中4名玩家的得分,当用户按下按钮时,会插入一个新行。我是这样做的:
private void makeTag(String P1Score, String P2Score, String P3Score, String P4Score, String slot)
{
// originalQuery will be null if we're modifying an existing search
String originalScore = SavedSlots.getString(slot, null);
// get a SharedPreferences.Editor to store new slot/scores
SharedPreferences.Editor preferencesEditor = SavedSlots.edit();
preferencesEditor.putString(slot, P1Score, P2Score, P3Score, P4Score); // to store
preferencesEditor.apply(); // store the updated preferences
然后在putString
下面提示输出错误:
The method putString(String, String) in the type SharedPreferences.Editor is not
applicable for the arguments (String, String, String, String, String).
似乎一次只能存储2个变量? (即插槽和P1Score)。
有4名球员,我想保存他们各自的分数,我该怎么办?
答案 0 :(得分:1)
putString
只需要两个参数:
你应该使用:
private void makeTag(String P1Score, String P2Score, String P3Score, String P4Score, String slot)
{
// originalQuery will be null if we're modifying an existing search
//* For Save your score//
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor preferencesEditor = SavedSlots.edit();
preferencesEditor.putString("slot1", "P1Score") // to store
preferencesEditor.putString("slot2", "P2Score") // to store
preferencesEditor.putString("slot3", "P3Score") // to store
preferencesEditor.putString("slot4"," P4Score") // to store
preferencesEditor.commit(); // store the updated preferences
获得分数。
String palyer1 = settings.getString("slot1", "notfound);
String palyer2 = settings.getString("slot2", "notfound);
String palyer3 = settings.getString("slot3", "notfound);
String palyer4 = settings.getString("slot4", "notfound);
更多信息:http://developer.android.com/guide/topics/data/data-storage.html
答案 1 :(得分:0)
.putString()
只有2个参数。第一个是关键,第二个是值。
所以你必须做类似的事情:
SharedPreferences.Editor preferencesEditor = SavedSlots.edit();
for(int i = 1; i<=4; i++){
preferencesEditor.putString("player_" + i, HisScore);
}
preferencesEditor.apply(); // store the updated preferences
答案 2 :(得分:0)
SharedPreferences解决方案就像地图一样工作。一个VALUE
到一个KEY
。
您可以通过将字符串与分隔符连接来解决此问题:
preferencesEditor.putString(slot, P1Score+"|"+P2Score+"|"+P3Score+"|"+P4Score);
并在检索时:
String scoreString = preferences.getString(slot, "");
// each item in this array will be one score
String [] scores = scoreString.split("|");
String playerOneScore = scores[0];
String playerTwoScore = scores[1];
//... and so on...
另请注意,您需要一个唯一的KEY来检索行。
但它真的很乱。您可以使用SQLiteDatabase
,您可以根据需要向键(索引列)添加任意数量的值(列)。
答案 3 :(得分:0)
方法putString不能像错误那样使用......
“SharedPreferences.Editor类型中的方法putString(String,String)不是
适用于参数(String,String,String,String,String)。“
SharedPreferences.Editor putString (String key, String value)
答案 4 :(得分:0)
如果你想存储4个分数,你需要调用putString方法4次。 它应该是这样的:
preferencesEditor.putString("p1Score", score1);
preferencesEditor.putString("p2Score", score2);
preferencesEditor.putString("p3Score", score3);
preferencesEditor.putString("p4Score", score4);
因为putString方法参数是键和值,而不是键和4个值,就像你试图做的那样。
另请注意,如果您将使用相同的密钥,下次您将应用分数,它将覆盖现有分数,我不确定您尝试实现的目标,但它仅适用于最终分数系统或类似的东西。