2012-01-17 1 views
3

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

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 отлично работают. Я не знаю, где проблема.

+0

Я предполагаю, что вы создаете ключи '' Number'' и '' Profile'' где-то - и что они соответствуют друг другу? – harism

ответ

4

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

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

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

С этим:

частное окончательное Строка NUMBER = "Число";
приватная финальная строка PROFILE = "Профиль";

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

+0

Да, вы правы, это работает, спасибо, но я не знаю, почему, когда я использую его, прежде чем у меня не возникло этой проблемы. Может быть, из-за этого у меня была только одна строка в SharedPreferences, правильно? – Adam

0

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

+0

Да, в первом случае, когда я нажимаю кнопку, значение должно сохранять в SharedPreferences, как вы можете видеть (и затем сохранять значения (в данном случае «1») в SharedPreferences в первом Activity :), но это происходит не потому, что в вторая активность, когда я показываю его с помощью Toast, из-за этого значение всегда равно 0 (int ab = a.getInt (Number, 0);), если я изменяю его на (int ab = a.getInt (Number, 1);) значение будет всегда 1. – Adam

+0

Я имею в виду - есть ли где-то в вашем коде, где вы устанавливаете Number = "Number" - переменные, которые вы перечисляете в своем примере кода, инициализируются, но не устанавливаются. Я не говорю об установке SharedSettings.putInt(). Я говорю о переменных, которые вы используете в качестве ключевых значений. Они установлены? –

0

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

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

, а не с помощью

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

при хранении Int долевого предпочтения

0

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

prefsEditorProfiles.putInt(Number, 1); 

только изменяя a.putInt для a.putString и извлечения его с a.getString я был в состоянии иметь правильное значение.

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

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