2

こんにちは、ゲームで 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 人のプレイヤーがいて、それぞれのスコアを保存したいのですが、どうすればよいですか?

4

5 に答える 5

1

putString次の 2 つのパラメーターのみを取ります。

  • 第 1 引数は「キー」を取ります
  • 2 番目の引数は値を取る"

使用する必要があります:

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

于 2012-09-15T15:25:36.077 に答える
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。ここでは、必要な数の値 (列) をキー (インデックス列) に追加できます。

于 2012-09-15T15:23:07.233 に答える
0

エラーが言うように、メソッド putString はそのように使用できません...

「SharedPreferences.Editor 型の putString(String, String) メソッドは
、引数 (String、String、String、String、String) には適用できません。」

SharedPreferences.Editor putString (文字列キー、文字列値)

于 2012-09-15T15:23:09.230 に答える
0

4 つのスコアを保存する場合は、putString メソッドを 4 回呼び出す必要があります。次のようになります。

preferencesEditor.putString("p1Score", score1);
preferencesEditor.putString("p2Score", score2);
preferencesEditor.putString("p3Score", score3);
preferencesEditor.putString("p4Score", score4);

これは、putString メソッドの引数がキーと値であり、キーと 4 つの値ではないためです。

また、同じキーを使用する場合、次回スコアを適用すると、既存のスコアが上書きされることに注意してください。何を達成しようとしているのかわかりませんが、Last Score Systemまたは同様のものにのみ適しています。

于 2012-09-15T15:26:04.240 に答える
0

.putString()引数は 2 つしかありません。最初のものはキーで、2 つ目は値です。したがって、次のようなことをする必要があります。

SharedPreferences.Editor preferencesEditor = SavedSlots.edit();
for(int i = 1; i<=4; i++){
      preferencesEditor.putString("player_" + i, HisScore);
}
preferencesEditor.apply(); // store the updated preferences
于 2012-09-15T15:21:34.650 に答える