Android和onSaveInstance和Restore

时间:2012-03-30 07:43:52

标签: android

我有一个大问题。我有一个活动,我有两个imageViews。在onCreate我有列表图片,我有10张图片。每当我开始这个活动时,两个imageView都从List中获取随机图片并显示它们。例如:当我开始活动时,我可以看到汽车和铅笔,当我再次开始这项活动时,我会得到大象和书。 现在这是我的问题。当我开始活动并阻止我的手机,然后解锁后我得到其他图片。我认为再次调用onCreate。我创建了

@Override    
protected void onSaveInstanceState(Bundle savedInstanceState) {   
    super.onSaveInstanceState(savedInstanceState);
}

public void onRestoreInstanceState(Bundle savedInstanceState) {

    if  (savedInstanceState != null) {
        pictureGameLeft.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair().getImageRight()));         
    }   
}

pictureGameLeft和Right是最后显示的图像。 我在onCreate方法之后写它们。 如何保存上次看到的图片,如果我锁定和解锁手机,我会得到相同的图片。也许onPause或onStop需要调用?

编辑: 现在:

if (savedInstanceState == null) {
    game = new Game();
    game.initGame();
    addElements(result);

    game.getCurrentLevel().nextPair();

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

    mRedrawHandler.sleep(1000);             
} 
else {
    pictureGameLeft.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair(
        .getImageLeft()));
    pictureGameRight.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair()
        .getImageRight()));
}

但是我得到了NullPointerException。

1 个答案:

答案 0 :(得分:0)

在做出决定的那一刻,我会将当前选择的图片保存到首选项中。 比你没有必须摆弄实时循环方法。

决定何时从偏好中选择或创建新的(随机)选择很容易。只需检查是否

savedInstanceState

public void onCreate (Bundle savedInstanceState)

为空。如果是这样,那是第一次通话。后续重新打开具有非空值