Высокая устойчивость данных?

Я пытаюсь сохранить высокий балл для моей игры. У меня есть действие на главном экране, действие на игровом экране и действие на экране перенаправления (когда игрок проигрывает). Вот метод из активности игрового экрана, который запускается, когда игрок умирает:

public void goToRedirectScreen()
{
    //getting preferences
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", this.MODE_PRIVATE);
    int highScore = prefs.getInt("highScore", 0); //0 is the default value

    rectBlack1.setFixedColor(0xFFFF0015);
    rectBlack2.setFixedColor(0xFFFF0015);
    rectBlack3.setFixedColor(0xFFFF0015);
    rectWhite1.setFixedColor(0xFFFF0015);
    rectWhite2.setFixedColor(0xFFFF0015);
    rectWhite3.setFixedColor(0xFFFF0015);

    //Sound when player dies
    MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.deathsound);
    mediaPlayer.start();

    Intent intent = new Intent(this, Redirect.class);

    if (mScoreboard.getScore() > highScore){
        mScoreboard.setHighScore(mScoreboard.getScore());
    }

    intent.putExtra("score", mScoreboard.getScore() + "");
    intent.putExtra("highScore", mScoreboard.getHighScore() + "");
    startActivity(intent);
}

И вот часть моего кода для экрана перенаправления, который получает намерение:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_redirect);

    Intent intent = getIntent();
    mScore = intent.getStringExtra("score");
    mHighScore = intent.getStringExtra("highScore");

    //**********setting preferences************
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", this.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt("highScore", Integer.parseInt(mHighScore));
    editor.commit();

    ButterKnife.inject(this);

    scoreTextView.setText(mScore);
    highScoreTextView.setText(mHighScore);


    playAgainButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            playAgain();

        }
    });

    mainMenuButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            goToMainMenu();
        }
    });



}

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

Вот мой класс Scoreboard на случай, если он будет полезен:

public class Scoreboard {
private int mScore = 0;
private int mHighScore = 0;

public void addPoint() {
    mScore += 1;
}

public int getHighScore() {
    return mHighScore;
}

public void setHighScore(int highScore) {
    mHighScore = highScore;
}

public int getScore() {
    return mScore;
}

public void setScore(int score) {
    mScore = score;
}

}

person Benyam Ephrem    schedule 02.03.2015    source источник
comment
Использовать общие настройки   -  person Apurva    schedule 02.03.2015
comment
@Apurva Апурва, не так ли?   -  person Benyam Ephrem    schedule 02.03.2015
comment
Я знаю, что вы можете сделать это с помощью SharedPreferences, но я настоятельно рекомендую использовать Sugar ORM — satyan.github. io/sugar — его очень легко настроить и использовать. И с ним вы можете делать всю необходимую настойчивость, а не только высокие баллы.   -  person cristianorbs    schedule 02.03.2015
comment
Вы никогда не назначаете рекорд, загруженный из префов, на табло.   -  person Harpunius    schedule 02.03.2015


Ответы (1)


Установите загруженное значение как высокий балл после его загрузки:

int highScore = prefs.getInt("highScore", 0); //0 is the default value
mScoreboard.setHighScore(highScore);

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

person samgak    schedule 02.03.2015