Я пытаюсь создать действие эндшпиля для своей игры Hangman для Android, и у меня есть некоторые проблемы с переносом значений, отличных от строк.Проблемы с сохранением boolean и int для sharedPrefs
Вот моя основная деятельность:
package com.assignment.hangman;
import android.app.Activity;
public class HangmanActivity extends Activity {
public static final String GAME_PREFERENCES = "Game Preferences";
public static final String GAME_LOGIC = "Game Logic";
public static final String GAME_LOGIC_GUESS = "Guessed letter";
public static final String GAME_LOGIC_SCORE_STRING = "Unknow score";
public static final boolean GAME_LOGIC_WIN_LOOSE = false;
}
Я получаю sharedprefs так:
mGameSettings = getSharedPreferences("GAME_PREFERENCES", Context.MODE_PRIVATE);
И это где-то идет не так, когда принятие изменений в редакцию:
public void finishGame() {
//Commit different game variables so they can be used in the end game activity
Editor editor = mGameSettings.edit();
editor.putString(GAME_LOGIC_SCORE_STRING, (tries + " of " + numberOfLives + " used"));
if (tries != numberOfLives){
editor.putBoolean("GAME_LOGIC_WIN_LOOSE", true);
}
editor.commit();
// Launch end game Activity
startActivity(new Intent(HangmanGameActivity.this, HangmanEndActivity.class));
}
И после изменения активности я возвращаю значения следующим образом:
if (mGameSettings.contains("GAME_LOGIC_WIN_LOOSE")) {
Log.i(GAME_DEBUG, "Succes");
boolean winLoose = mGameSettings.getBoolean("GAME_LOGIC_WIN_LOOSE", false);
if (winLoose) {
winLooseView.setText(R.string.you_win);
} else {
winLooseView.setText(R.string.you_loose);
}
}
Но как-то только строчка выполняется правильно. Я предполагаю, что логическое значение возвращается к значению по умолчанию false.
Может ли кто-нибудь помочь мне пролить свет на это?
Wow, что было легко. Большое спасибо за быстрый ответ. – SQDK