2010-07-16 5 views
1

마침내 내 앱에서 모든 것을 끝내었지만 이제는 홈 버튼을 제외하고 종료 할 때마다 강제 종료 화면이 깜박이며 사라집니다. 큰 거래는 아니지만 실제로 그 일이 멈추기를 바란다. 마침내 그 일에 logcat이 있고 슈퍼가 없다고했다. 정지(), 그래서 추가했다. nullPointer,onStop()으로 인해 강제 닫기

moveTaskToBack (true)을 사용하여 응용 프로그램을 닫고, 그 응용 프로그램을 사용할 때마다 내 onDraw 메서드에서 nullpointer를 제공합니다. 내가이 된 onDraw의 첫 번째 부분이 null 나에게 말하고 도움

public void onDraw(Canvas canvas){ 
     if(checkState == -9){ 
      canvas.drawColor(Color.BLACK); 
      canvas.drawBitmap(bG, 0, 0, paint); 
      canvas.drawBitmap(title, display.getWidth()/2 - title.getWidth()/2, 10, paint); 
      canvas.drawBitmap(start, display.getWidth()/2 - start.getWidth()/2, 40 + title.getHeight(), paint); 
      canvas.drawBitmap(instructions, display.getWidth()/2 - instructions.getWidth()/2, 80 + title.getHeight() + start.getHeight(), paint); 
      canvas.drawBitmap(exit, display.getWidth()/2 - exit.getWidth()/2, 120 + title.getHeight() + start.getHeight() + exit.getHeight(), paint); 
      canvas.drawBitmap(highScore, 0, display.getHeight() - highScore.getHeight(), paint); 
      String high = highLevel + ""; 
      for(int i = 0; i < high.length(); i++){ 
       levelOnMenu = high.charAt(i) + ""; 
       levelPiece = Integer.parseInt(levelOnMenu); 
       int placeX = highScore.getWidth() + levelNumber.getWidth()/2 ; 
       if(high.length() == 1){ 

       } 
       else if(high.length() == 2){ 
        if(i == 0){ 

        } 
        else{ 
         placeX = placeX + levelNumber.getWidth(); 
        } 
       } 

사전에 감사를 필요로 어떤 다른 정보 확실하지 않다, 그래서 알려주는 drawColor은 ... 어떤 아무튼 '이 t 나 여기

에 의미를 많이 만드는 것입니다 나는 moveTaskToBack를 사용하는 경우()

if(checkState == -11){ 
      if(event.getAction() == MotionEvent.ACTION_UP){ 
       if(x >= display.getWidth()/2 - pauseMenu.getWidth()/2 && x <= display.getWidth()/2 + pauseMenu.getWidth()/2 && y >= display.getHeight()/2 - pauseMenu.getHeight()/2 && y <= display.getHeight()/2 - pauseMenu.getHeight()/2 + pauseMenu.getHeight()/3){ 
        checkState = previousState; 
       } 
       if(x >= display.getWidth()/2 - pauseMenu.getWidth()/2 && x <= display.getWidth()/2 + pauseMenu.getWidth()/2 && y >= display.getHeight()/2 - pauseMenu.getHeight()/2 + pauseMenu.getHeight()/3 && y <= display.getHeight()/2 - pauseMenu.getHeight()/2 + 2*(pauseMenu.getHeight()/3)){ 
        if(sound){ 
         sound = false; 
        } 
        else{ 
         sound = true; 
        } 
       } 
       if(x >= display.getWidth()/2 - pauseMenu.getWidth()/2 && x <= display.getWidth()/2 + pauseMenu.getWidth()/2 && y >= display.getHeight()/2 - pauseMenu.getHeight()/2 + 2*(pauseMenu.getHeight()/3) && y <= display.getHeight()/2 - pauseMenu.getHeight()/2 + pauseMenu.getHeight()){ 

        moveTaskToBack(true); 
       } 

      } 
     } 
+0

NPE를 유발하는 null이 무엇인지 나타내는 코드를 게시 할 수 있습니까? 당신의 onDraw에 뭔가가 있습니까? –

+0

실제로 집에 도착했을 때 실제로 작동합니다 :/ – William

+0

기술적으로 moveTaskToBack (true)을 호출 할 필요가 없습니다. onStop() 전에 호출 된 onPause()는 사용자의 작업이 이미 포어 그라운드에 있지 않음을 의미합니다 . moveTaskToBack (true)는 응용 프로그램을 종료하지 않으며, 이는 작업에서 finish()를 호출하여 완료됩니다. 그러면 시스템에서 응용 프로그램 프로세스를 파괴합니다. –

답변

0

앱을 닫습니다 Activity.finish() 함수를 사용하지 않나요?

관련 문제