SharedPreferences - 高分始终重置为零

时间:2016-08-04 17:50:51

标签: android sharedpreferences

我正在尝试使用SharedPreferences保存高分。我在主要活动课程的最开始时将currentScorehighestScore初始化为零。

public class MainActivity extends AppCompatActivity {
    int currentScore = 0;
    int highestScore = 0;
    ...
}

当我在运行结束后单击某个按钮开始新的运行时,如果currentScore更高,则highestScore会替换SharedPreferences。这部分效果很好。但是,我不知道在哪里创建和使用editorputIntcommithighestScore。每次关闭应用时,public void newRun(View view){ if(currentScore > highestScore){ highestScore = currentScore; } ... //Store and commit highestScore here ? //Will it be reset since it is initialized to zero at the class beginning? } 都会重置为零。

<Grid.RowDefinitions>
  <RowDefinition Height="auto"></RowDefinition> 
  <RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

2 个答案:

答案 0 :(得分:0)

因为每当你打开应用程序时你的高分都被初始化为零....所以你可以做的是从共享偏好中获取最高分数值并在每次开始应用时重置highestscore变量的值

答案 1 :(得分:0)

在您创建SharePreferences实例并调用getInt之前,该值将为0。请参阅here。例如,在onCreate或onStart方法中检索存储的值:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
highestScore = settings.getInt("mTag", 0) 

并在您的newRun帮助器方法或onStop中提交值:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("mTag", highestScore);
editor.commit();