Возможно ли, что 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.