2012-03-30 2 views
1

큰 문제가 있습니다. 두 개의 imageView가있는 곳에서 활동하고 있습니다. onCreate에는 10 장의 그림이있는 목록 그림이 있습니다. 이 액티비티를 시작할 때마다 imageViews는 List에서 임의의 그림을 가져 와서 보여줍니다. 예를 들면 : 활동을 시작할 때 저는 자동차와 연필을 볼 수 있습니다. 그리고이 활동을 다시 시작하면 나는 코끼리와 책을 얻습니다. 이제 제 문제입니다. 활동을 시작하고 휴대 전화를 차단하면 잠금 해제 된 후 다른 사진을 볼 수 있습니다. 나는 onCreate가 다시 호출된다고 생각합니다. 나는 창조한다Android 및 onSave 인스턴스 및 복원

@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 및 오른쪽은 그것이 보여주는 마지막 이미지이다. 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이 얻을.

답변

0

결정이 내려지는 바로 그 순간에 환경 설정에 현재 사진 선택을 저장합니다. 라이브 사이클 메서드를 사용하지 않아도됩니다.

선택 사항을 선택하거나 새로운 (임의의) 선택 사항을 만드는 것이 쉬운 결정입니다. 그냥 null의

public void onCreate (Bundle savedInstanceState) 

savedInstanceState 

의 여부를 확인한다. 그렇다면 첫 번째 호출입니다. 후속 다시 열기가 null이 아닌 값을 가짐

+0

이제 java.lang.RuntimeException이 발생 함 : 활동을 일시 중지 할 수 없음 – user1302569

+0

코드에 여전히 문제가 있습니까? –