如何保存和重新创建Android活动

时间:2012-07-22 11:04:43

标签: android

我正在尝试自学一些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);
}

由于某种原因,我的捆绑不会保存,我想丢失的任何想法?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

来自文档:

  

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