Перезапуск изменений приложения SharedPreferences? - PullRequest
0 голосов
/ 09 июня 2018

Хорошо, у меня есть список чисел, которые я должен сохранить, и я разделяю их с помощью разрывов строк ("\ n), а затем помещаю их в строку для сохранения:

        List<String> usedTabs = new ArrayList<>();
        ...
        StringBuilder save = new StringBuilder();
        if(usedTabs.size()==0) {
            save = new StringBuilder("0");
        } else {
            for(String s: usedTabs) {
                save.append(s);
                save.append("\n");
            }
        }

        SharedPreferences sharedPreferences  = PreferenceManager.getDefaultSharedPreferences(getContext());
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString("saveUsedTabs", save.toString());
        editor.commit();

Отлично, этоработает! Тоже возвращаю свой список, когда мне это нужно снова, я делаю это:

    String save = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("saveUsedTabs", "0");
    String tabs[] = save.split("\n");
    usedTabs.addAll(Arrays.asList(tabs));

Работает тоже. Но если я перезагружаю приложение после сохранения, когда я загружаю его снова после последнего \ n, есть некоторые4 пробела: "6\n3\n5\n3\n3\n "

Как это вообще происходит? Я уже сменил ключ, чтобы убедиться, что мои предпочтения больше не используются.

Ответы [ 2 ]

0 голосов
/ 10 июня 2018
List<String> usedTabs = new ArrayList<>();
    ...
    StringBuilder save = new StringBuilder();
    if(usedTabs.size()==0) {
        save = new StringBuilder("0");
    } else {
        for(String s: usedTabs) {
            save.append(s);
            save.append("\n");
        }
    }

    SharedPreferences sharedPreferences  = PreferenceManager.getDefaultSharedPreferences(getContext());
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("saveUsedTabs", save.toString().replaceAll(" ",""));
    editor.commit();

Попробуйте описанное выше, просто удалите пробелы во время сохранения значения.

0 голосов
/ 09 июня 2018

Используйте этот код для хранения ваших строковых данных в общих настройках.Если вы занимаетесь этим, тогда

getSharedPreference("name of your preferences", Context.MODE_PRIVATE).edit().putString("key", "value").apply(); //use .commit() or apply() at the end.

Если вы учитесь в другом классе, просто добавьте контекст в начале.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...