2012-03-29 153 views
0

我的活动有问题。这是我的创作:Android和生命周期

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”将会添加其他元素。之后,我从这个数组列表中获取一对元素并显示图像。

现在这是我的问题。当我选择任何选项时,游戏是创建并显示两个图像。当我锁定我的手机后,解锁,我得到其他照片。我认为我的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())); 

回答

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

这样做,你需要使用这些值过之后......我的意思是你在那个开关的情况下在做什么,永远......做同样的再次

+0

仍然是同样的问题。 onCreate创建新游戏,并获得新照片。 – edi233 2012-03-29 08:31:37

+0

你做了什么改变......? – ngesh 2012-03-29 08:32:23