你好我正在显示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名球员,我想保存为各自的分数,我该怎么办呢?
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
.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
该方法putString不能用这样的错误说...
“在类型SharedPreferences.Editor方法putString(字符串,字符串)不在
适用于参数(字符串,字符串,字符串,字符串,字符串)“。
SharedPreferences.Editor putString(String键,字符串值)
如果你想存储分数,你需要调用putString方法4倍。 它应该是这样的:
preferencesEditor.putString("p1Score", score1);
preferencesEditor.putString("p2Score", score2);
preferencesEditor.putString("p3Score", score3);
preferencesEditor.putString("p4Score", score4);
其原因putString方法的参数是关键和价值,而不是键和像你这样的4个值试图这样做。
还注意到,下一次您将应用分数,如果你会使用相同的密钥将覆盖现有的成绩,我不知道你试图达到的目标,但它会是很好的只是最后评分系统或类似的东西。
该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...
另外请注意,你需要一个独特的密钥来检索行。
但它真的很乱。 您可以使用SQLiteDatabase
只要你想,你可以尽可能多的值(列)添加到一个键(索引列)。