web-dev-qa-db-ja.com

共有設定から文字列配列を取得します

共有設定にいくつかの文字列の配列を保存し、その後それらを取得する必要があります。私はこれを試しました:

prefsEditor.putString(PLAYLISTS, playlists.toString());ここで、プレイリストは_String[]_です

取得するには:

playlist= myPrefs.getString(PLAYLISTS, "playlists");ここで、プレイリストはStringですが、動作していません。

これどうやってするの ?誰も私を助けることができますか?

前もって感謝します。

54
Gabrielle

次のように、配列の独自の文字列表現を作成できます。

StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
    sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());

次に、SharedPreferencesから文字列を取得すると、次のように解析します。

String[] playlists = playlist.split(",");

これは仕事をする必要があります。

92
Egor

APIレベル11から、putStringSetとgetStringSetを使用して、文字列セットを保存/取得できます。

SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(SOME_KEY, someStringSet);
editor.commit();

SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
Set<String> someStringSet = pref.getStringSet(SOME_KEY);
28
MikeL

JSONを使用して、配列を文字列としてシリアル化し、設定に保存できます。同様の質問については、私の回答とサンプルコードを参照してください。

Androidの配列の共有設定を作成するコードを記述する方法

8
Jeff Gilfelt

詳細情報が必要な場合は、この簡単な機能を使用して配列リストを事前に保存してください ここをクリック

 public static void storeSerializeArraylist(SharedPreferences sharedPreferences, String key, ArrayList tempAppArraylist){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    try {
        editor.putString(key, ObjectSerializer.serialize(tempAppArraylist));
        editor.apply();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

そして、プリフレンスから保存された配列リストを取得する方法

public static ArrayList getSerializeArraylist(SharedPreferences sharedPreferences, String key){
    ArrayList tempArrayList = new ArrayList();
    try {
        tempArrayList = (ArrayList) ObjectSerializer.deserialize(sharedPreferences.getString(key, ObjectSerializer.serialize(new ArrayList())));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return tempArrayList;
}
0
HashSet<String> mSet = new HashSet<>();
                mSet.add("data1");
                mSet.add("data2");
saveStringSet(context, mSet);

どこで

public static void saveStringSet(Context context, HashSet<String> mSet) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = sp.edit();
    editor.putStringSet(PREF_STRING_SET_KEY, mSet);
    editor.apply();
}

そして

public static Set<String> getSavedStringSets(Context context) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    return sp.getStringSet(PREF_STRING_SET_KEY, null);
}

private static final String PREF_STRING_SET_KEY = "string_set_key";
0
Dan Alboteanu