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

ドキュメントから:

永続データはonSaveInstanceState(Bundle)ではなくonPause()に保存することが重要です。後者はライフサイクルコールバックの一部ではないため、ドキュメントで説明されているように、すべての状況で呼び出されるわけではありません。

于 2012-07-22T11:15:28.880 に答える