Android SharedPreferences在会话中持久存在但不跨会话

时间:2014-07-16 10:37:09

标签: android persistence sharedpreferences

我昨天开始玩这个,所以我希望我做的事非常愚蠢。

我的应用程序有两个类/活动:PuzzleSelection和SolvePuzzle。

我的PuzzleSelection onCreate看起来像这样:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_puzzle_selection);
    Intent intent = getIntent();
    int increment_puzzles_solved = intent.getIntExtra(PuzzleSelection.INCR_COUNTER, 0);
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    int puzzles_solved = sharedPref.getInt(getString(R.string.puzzles_solved), 0);
    if (increment_puzzles_solved > 0) {
        puzzles_solved += increment_puzzles_solved;
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putInt(getString(R.string.puzzles_solved), puzzles_solved);
        editor.commit();
    }
    TextView puzzle_counter = (TextView) findViewById(R.id.puzzle_counter);
    puzzle_counter.setText(getString(R.string.puzzles_solved) + " " + puzzles_solved);
}

我的PuzzleSelection活动包括一个TextView,通常会说“拼图解决:n”,其中每次进入SolvePuzzle活动时n应该递增并成功解决它(它会在意图中使用IntExtra PuzzleSelection.INCR_COUNTER将其发送回PuzzleSelection )。

我正在通过USB将手机连接到电脑,并使用eclipse将应用程序发送到手机来测试应用程序。

我的计数器在会话中按预期工作:计数器从零开始,每次解决拼图时都会递增。所以数据似乎仍然存在......

但是如果我重新启动应用程序,计数器将重置为零。我究竟做错了什么?我以为我的数据会在会话中持续存在......

1 个答案:

答案 0 :(得分:0)

更改此

 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

SharedPreferences sharedPref = getSharedPreferences(<PreferenceName>, <Mode>);

在两个活动中使用它来获取SharedPreferences的实例。