2011-10-01 10 views
0

내 앱에서 사용자가 클릭하면 텍스트 상자가 클릭되어 화면에 나타납니다. (나는 GONE에서 VISIBILE로 setVisibility를 사용합니다). 내가 가진 문제는 사용자가 장치의 BACK 단추를 누르면 내 응용 프로그램이 닫히는 것입니다.안드로이드 뒤로 버튼

사용자가 내 코드가 호출되기보다는 뒤로 버튼을 누르면 표시 여부를 GONE으로 설정할 수있는 방법이 있습니까?

답변

1

다음 작품 : API 레벨에서 시작

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do whatever you want 
     //AND 
     //return true to tell the framework you did handle the back key 
     return true; 
    } 
    //This is not the back key, just ask the framework to behave as usual. 
    return super.onKeyDown(keyCode, event); 
} 

5 (안드로이드 2.0) 당신은 또한 사용할 수 있습니다

@Override 
public void onBackPressed() { 
    // Do something (or nothing) here 
    return; 
} 

완전한 개요 this android developer blog message를 참조하십시오 .

+0

수퍼 클래스를 호출 할 때 기본 피니시가 작동하지 않는다. super.onKeyDown (keyCode , 이벤트) 내 코드를 살펴 봅니다. –

+0

@ArpitGarg, 위의'onKeyDown'에서'false'를 반환하면 Activity가'finish() '되지 않습니다. –

+0

고맙습니다. 코드를 사용했는데 정상적으로 작동합니다. – Belgi

1

원하는 기능으로 onBackPressed()을 덮어 씁니다.

기본 구현은 finish()을 호출하여 현재 활동을 닫습니다. API 레벨 1부터

+0

_ 참고 : _ Android 2.0 이상에서만 사용 가능합니다. (API 레벨 5) –

+0

네, 잊어 버렸습니다. 그래서 너는 나에게서 upvote 하나를 가지고있어. :) –

0
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { 

     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Put your code here 
     } 

     return true; 

    } 
+1

**주의! ** 여기서 무조건 true를 반환하여 _every_ keypresses를 취소 할 수 있습니다. 'EditText'를 사용하려고하면 나쁘다. :) –

+0

고마워............. 모든 키를 누를 때마다 취소된다. –