2012-03-30 9 views
1

나는 onPause를 활동 중이며 잘 작동합니다. 이것은 코드입니다OnPause 및 돌아 가기 버튼

@Override 
protected void onPause() { 
    super.onPause(); 
    Intent intent; 

    intent = new Intent(Games.this, PauseScreen.class); 
    startActivity(intent); 

} 

그러나 문제가 있습니다. 뒤로 버튼을 누르면 내가 멈추고 새로운 활동이 시작됩니다. 내 휴대 전화에서 뒤로 버튼을 클릭 할 때를 제외하고는 항상 onPause 작업을 원합니다. 내가 어떻게 할 수 있니? 나는 그것이 if(backbutton was click){onPause is not working}else{onPause working}일지도 모른다고 생각하지만 어떻게이 솔루션을 구현하는지 모르겠습니다. 아니면 더 좋은 생각이 있을까요?

답변

2

여기 user1302569

@ 당신이 응용 프로그램에서 당신의 욕망 동작을 달성하기 위해 수행 할 단계 ..

1 단계입니다 :이 다시 키 운전 방식을 오버라이드 (override)하는 당신 Activty에서.

@Override 
    public void onBackPressed() { 
      //Here you get Back Key Press So make boolean false 
      no_back_key=false; 
      super.onBackPressed(); 
} 

2 단계 : 활동 클래스에서 다음과 같은 부울 변수 하나를 가져옵니다.

public boolean no_back_key=true; 

3 단계 : OnPause 방법은

  @Override 
      protected void onPause() { 
      super.onPause(); 
      Intent intent; 
      //Only this boolean will become false when we get Back Key Press as you Said in Your Question 
      if(no_back_key){ 
      intent = new Intent(Games.this, PauseScreen.class); 
      startActivity(intent); 
    } 

다음 4 단계 같은 몇 가지 일을 : 귀하의 활동의 OnResume 확인이 확인도. 이 http://android-developers.blogspot.in/2009/12/back-and-other-hard-keys-three-stories.html

+0

매우 감사 참조 할 수 있습니다 개발자 사이트에서 안드로이드로 돌아 가기 키 이벤트에 관한

@Override protected void onResume() { no_back_key=true; super.onResume(); } 

}

. 이것은 훌륭한 해결책입니다. – user1302569

+0

도움이 되니 기쁩니다. – Herry

-1

은 당신이 그것을 처리 할 필요가 없습니다 다시 키를 눌러 시스템에서 처리 한 것을 의미하기 때문에 다음과 같은 방법 -

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
      //Do something (OR NOTHING) 
    } 
    return true; 
} 

true를 반환하는 것을 잊지 구현합니다.

onBackPressed() 대신 사용할 수있는 유용한 대체품입니다.

0

시도 onBackPressed()를 오버라이드 (override) 거기에 플래그를 설정하고에 그 플래그를 확인하여 onPause()

(onPause에서 다른 활동을 시작하지만 이상하다하지만 어쩌면 당신은 그래서는 생각할 수 없다 할 좋은 이유가 하지만 시나리오 ...)