1

我正在尝试自学一些 android 编程,但我无法让我的应用程序保存和加载用户进度。

目前我在我的活动中初始化我的变量级别和分数。然后从我的 onCreate 方法调用它:

    if (savedInstanceState != null) {
        // Restore value of members from saved state
        playersScore = savedInstanceState.getInt(STATE_SCORE);
        level = savedInstanceState.getInt(STATE_LEVEL);
    } else {
        playersScore = 0;
        level = 0;
    }

最后我有一个保存包的方法:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putInt(STATE_SCORE, playersScore);
    savedInstanceState.putInt(STATE_LEVEL, level);

    super.onSaveInstanceState(savedInstanceState);
}

出于某种原因,我的捆绑包无法保存,关于我缺少什么的任何想法?

4

2 回答 2

0

你看过:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    playersScore = savedInstanceState.getInt(STATE_SCORE);
    level = savedInstanceState.getInt(STATE_LEVEL);
}

也不应该:

savedInstanceState.putInt(STATE_SCORE, playersScore);
savedInstanceState.putInt(STATE_LEVEL, level);

是:

savedInstanceState.putInt("STATE_SCORE", playersScore);
savedInstanceState.putInt("STATE_LEVEL", level);

因为 putInt() 需要一个字符串和一个 int。

于 2012-07-22T11:14:36.757 回答
0

从文档:

请注意,将持久数据保存在 onPause() 而不是 onSaveInstanceState(Bundle) 中很重要,因为后者不是生命周期回调的一部分,因此不会在其文档中描述的所有情况下都被调用。

于 2012-07-22T11:15:28.880 回答