2012-07-22 38 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