Android (2.1): коррупция общих преференций? - PullRequest
0 голосов
/ 07 марта 2012

Возможно ли, что SharedPreferences каким-либо образом поврежден? Вот мой код, который вызывает его в onCreate:

int resID = getIntent().getIntExtra("resID", 0);
int freshStart = getIntent().getIntExtra("freshStart", 0);

//retrieve difficulty setting from the preference file
SharedPreferences settings = getSharedPreferences("prefs", 0);
int difficulty = settings.getInt("difficulty", 4);

Отладчик показывает, что эти переменные имеют значения

resID = 2130837507
frestStart = 1
difficulty = 2130837507

(!?!?!)

Вот код, в котором трудность сохраняется с помощью меню:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("difficulty", difficulty);
editor.commit();

Кажется довольно простой. Меню присваивает ему значение от 3 до 5. Очевидно, что значение типа 2130837507 нарушает мое приложение.

Вот код, где трудность сохраняется с помощью onPause:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("difficulty", difficulty);
editor.commit();

что то же самое. Нет другого кода, который читает или устанавливает общие предпочтения. Нет другого кода, который устанавливает значение для сложности.

Так как, черт возьми, difficulty присваивается значение 2130837507?

Редактировать. Это ошибка старой человеческой ошибки. Мои операторы присваивания были в порядке. Мои getInt() заявления, однако, не были:

SharedPreferences settings = getSharedPreferences("prefs", 0);
difficulty = settings.getInt("difficulty", 4);
difficulty = settings.getInt("resID", 0);

Итак, да, вот как я получил значение difficulty, которое выглядело как идентификатор Android.

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