2012-07-22 52 views
1

我想教自己一些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); 
} 

出于某种原因,我的包不会保存,对我缺少什么,我什么想法?

回答

0

从文档:

注意,它保存的onPause(持久性数据是很重要的),而不是的onSaveInstanceState(捆绑),因为后者不是生命周期回调的一部分,所以不会被调用其文档中描述的每种情况。

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。

+0

很抱歉忘了说我初始化了STATE_SCORE和STATE_LEVEL作为字符串。我设法让它使用持久数据,保存在onPause()中。感谢您的帮助 – Isaac 2012-07-31 23:36:35

相关问题