0

onRestoreInstanceState() メソッドで問題が発生しています。この SumWindow アクティビティは、ユーザーにいくつかの質問を表示し、変数の試行と権限にユーザーのスコアを格納します。問題: ユーザーが [戻る] を押してから、メイン メニューから [再生] を押した場合。(SumWindow アクティビティ get が作成する場所) スコアは 0 のうち 0 にリセットされます。この保存/読み込みで何か基本的なことが欠けていると確信しています。これは私のコードです(読みやすいように簡略化されています)

public class SumWindow extends Activity implements OnClickListener {
    int tries;
    int rights;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            tries = savedInstanceState.getInt("tries");
            right = savedInstanceState.getInt("right");
        }
        @Override
        public void onSaveInstanceState(Bundle savedInstanceState) {
            super.onSaveInstanceState(savedInstanceState);
            savedInstanceState.putInt("tries", tries);
            savedInstanceState.putInt("rights", rights);
        }
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            tries = savedInstanceState.getInt("tries");
            right = savedInstanceState.getInt("rights");
        }
4

2 に答える 2

0

おそらく問題は、OnRestoreInstanceState で、savedInstanceState が null かどうかをチェックしていないことです。次のように変更する必要があります。

if(savedInstanceState!=null){
  tries = savedInstanceState.getInt("tries");
  right = savedInstanceState.getInt("rights");
}

私の英語でごめんなさい!

于 2013-07-22T10:33:15.117 に答える