我正在尝试自学一些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);
}
由于某种原因,我的捆绑不会保存,我想丢失的任何想法?
答案 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)中保存持久数据非常重要,因为后者不是生命周期回调的一部分,因此不会在其文档中描述的每种情况下调用。