Почему нельзя сохранить INT в SharedPreferences? - PullRequest
5 голосов
/ 17 января 2012

У меня странная проблема. У меня никогда не было этого раньше. Когда я пытаюсь сохранить значение int в моей SharedPreference, а затем восстановить в другой деятельности. Значение всегда равно 0, даже если я сохраняю там другое значение (например: 1);

private String Number;
private String Profile;

и затем сохранение значений (в данном случае «1») в SharedPreferences в первом действии:

SharedPreferences a = FirstActivity.this.getSharedPreferences("a", MODE_PRIVATE);
SharedPreferences.Editor prefsEditorProfiles = a.edit();
prefsEditorProfiles.putInt(Profile, 1);
prefsEditorProfiles.putInt(Number, 1);
prefsEditorProfiles.commit();

затем восстановите SharedPreferences в других действиях:

SharedPreferences a = SecondActivity.this.getSharedPreferences("a", MODE_PRIVATE);
int ab = a.getInt(Number, 0);

И приложение показывает мне 0 вместо 1. Мои другие SharedPreferences работают отлично. Я не знаю, в чем проблема.

Ответы [ 4 ]

5 голосов
/ 17 января 2012

Я бы проверил, каково значение переменных Number и Profile, которые вы объявили ... вы используете их значения в качестве ключей, поэтому, если они имеют конфликтующие имена, вы можете перезаписать один параметр другим, даже если код выглядит правый.

Я бы рекомендовал заменить это:

частный номер строки;
профиль приватной строки;

С этим:

private final String NUMBER = "Number";
private final String PROFILE = "Профиль";

И затем использовать эти константы при установке / получении значения вашего предпочтения.

1 голос
/ 16 февраля 2015

Я некоторое время пытался использовать putInt, как вы, но это всегда выдает ошибку.

prefsEditorProfiles.putInt(Number, 1);

, просто изменив a.putInt на a.putString и получив его с помощью a.getString Я смог получить правильное значение.

поэтому, я думаю, должно быть что-то не такс putInt и getInt.

В любом случае, попробуйте также иметь правильное значение, необходимое для продолжения подачи заявления.

1 голос
/ 30 мая 2014

Пожалуйста, попробуйте использовать

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());

вместо использования

SharedPreferences prefs = getActivity().getSharedPreferences ("PREFS_KEY", 0);

при сохранении int в общих настройках

1 голос
/ 17 января 2012

Вы когда-нибудь устанавливали значения для «Число» и «Профиль»?Если нет, то это ваша проблема - эти строки нулевые.

...