繁体   English   中英

在共享首选项中存储一维字符串数组

[英]Storing a 1D array of strings in Shared Preferences

我有两个数组,第一个包含9个按钮。 第二个可以容纳9个字符串。 我有一个名为getPlayerChoiceText的方法,用在playerchoice Array的每个按钮上设置的文本填充String数组。 如何使用SharedPreferences保存此文本?

private String[] getPlayerChoiceText()
{
    playerchoiceText[0] = playerchoice[0].getText().toString();
    playerchoiceText[1] = playerchoice[1].getText().toString();
    playerchoiceText[2] = playerchoice[2].getText().toString();
    playerchoiceText[3] = playerchoice[3].getText().toString();
    playerchoiceText[4] = playerchoice[4].getText().toString();
    playerchoiceText[5] = playerchoice[5].getText().toString();
    playerchoiceText[6] = playerchoice[6].getText().toString();
    playerchoiceText[7] = playerchoice[7].getText().toString();
    playerchoiceText[8] = playerchoice[8].getText().toString();

    return playerchoiceText;
}

   private void saveData()
   {
      SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedPreferences.edit();
      playerchoiceText = getPlayerChoiceText();
   }

我有同样的问题。 我通过使用JSONArray解决了它。

JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");

// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());

// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", "[]"));

这样,您可以轻松地执行InsertDelete操作。 我希望这有帮助。

Android的SharedPreferences用作键值存储,并且不允许您直接存储Java对象。 因此,如果您想使用共享的首选项存储它们,则将玩家选择的文本值表示为地图会更有意义。

如果要继续将选择的文本表示为数组,可以在这里使用一个技巧。 您可以使用定界符(例如管道)存储文本:

String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();

然后,在出路:

SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String[] playerchoiceText = prefs.getString("choices", "").split("\\|");

使用put/getStringSet()

private void saveData()
   {
      SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
      SharedPreferences.Editor editor = sharedPreferences.edit();
      String[] playerchoiceText = getPlayerChoiceText();
      editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText)); 
      editor.commit();
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM