Kæmpe Klunker
Kæmpe Klunker

Reputation: 865

Android SharedPref edit not working

Got this code, which basicly updates my textviews depending on how far the user is in the quiz, which is stored in sharedPrefs. But when the correct answer is entered the prefs doesn't update. Does the commit() need too long time to set the prefs, so the activity calls the method setText() before the sharedPrefs are updated or what am i doing wrong?

private void setText() {
    SharedPreferences score = this.getSharedPreferences("football", MODE_PRIVATE);
    questionNumber = score.getInt("football", 0);
    question.setText(questions.get(questionNumber).get(0));
}

public void onClick(View v) {
switch (v.getId()) {
    case R.id.bCheckAnswer:
        if (questions.get(questionNumber).contains(etAnswer.getText().toString())) {
            Integer newQ = questionNumber += 1;
            SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = change.edit();
            editor.putInt("football", newQ);
            editor.commit();
            setText();
        }else{
            question.setText("error occured");
        }
        break;
}

Upvotes: 0

Views: 84

Answers (2)

Michael Yaworski
Michael Yaworski

Reputation: 13483

You're not opening the SharedPreference the same way when setting and getting.

Change this:

SharedPreferences change = this.getPreferences(Context.MODE_PRIVATE);

to this:

SharedPreferences change = this.getSharedPreferences("football", MODE_PRIVATE);

Notice the differences:

  • getPreferences vs getSharedPreferences
  • you didn't give the preference reference as "football"

Upvotes: 4

David C Adams
David C Adams

Reputation: 1973

Are you sure the prefs doesn't get updated or is it just that your textview isn't getting updated? If this is being done in your Activity, you should not be changing layout (your text view) from within the Activity. You should use a Handler to make UI changes.

Upvotes: 0

Related Questions