Android和生命周期

时间:2012-03-29 08:20:11

标签: android oncreate

我的活动有问题。这是我的onCreate:

case NORMAL:
        game = new Game(); // create new game
        game.initializeGame(); // initialize new game
        addSomeElements(result); // add elements to array due to user choice
        game.getCurrentLevel().nextPair(); // next pair of elements from array

        pictureGameLeft
                .setImageResource(colorsPictures.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(colorsPictures.get(game.getCurrentLevel().getCurrentPair()
                .getImageRight()));


        break;
    case NOTNORMAL:
        game = new Game();
        game.initializeGame();
        addSomeElements(result);

        game.getCurrentLevel().nextPair();
        pictureGameLeft
                .setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair()
                .getImageRight()));

        break;

由于用户的选择,这是创造新游戏。当用户选择NORMAL到arraylist“normal”时会添加一些元素。如果用户选择NOTNORMAL到arraylist“notnormal”将添加其他元素。之后我从这个arraylist获得了一对元素并显示图像。

现在这是我的问题。当我选择任何选项时,游戏就会创建并显示两个图像。当我锁定手机然后解锁时,我会收到其他照片。我认为我的onCreate方法再次启动。我想保存第一张图片,当我锁定和解锁手机时,我得到相同的图片。我怎么能这样做我尝试在onCreate之后使用这个解决方案:

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putIntegerArrayList("table", (ArrayList<Integer>) normal);
    super.onSaveInstanceState(savedInstanceState);

}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");

}

但它不起作用。

edit1:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");    
    pictureGameLeft.setImageResource(normal.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(normal.get(game.getCurrentLevel().getCurrentPair().getImageRight()));

1 个答案:

答案 0 :(得分:0)

 ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");

在这之后你也需要使用这些值...我的意思是你在那个开关盒里做的事情......再做一次