onBackPressed() 함수를 override 하고 super 클래스의 onBackPressed() 함수는 부르지 않으면 back 키를 눌러도 finish 처리하지 않게 할 수 있습니다.
예) @Override public void onBackPressed() { //super.onBackPressed(); openDialog(DLG_ID_CLOSE_CONFIRM); }
super 클래스의 함수를 부르는 대신 다이얼로그를 띄우게 하였습니다. 해당 다이얼로그에서 ok 버튼을 누르면 앱을 종료하게 하였습니다.
대신, onKeyDown() 함수를 이용하는 방법도 있습니다.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { openDialog(DLG_ID_CLOSE_CONFIRM); return false; } return super.onKeyDown(keyCode, event); } onKeyDown() 함수에서 false 를 리턴하면 기본 키 동작을 처리하지 않습니다. Home 버튼 등은 적용되지 않는 것으로 알고 있습니다.
처음에 KeyDown이벤트를 TouchDown으로 생각했었다. KeyDown이벤트는 하드웨어적인 Key가 눌렸을 때 발생하는 것으로, 안드로이드 핸드폰에는 기본적으로 back, home, menu, search 버튼이 존재한다. 키보드가 제공되는 핸드폰도 있다면, 각 key에 대한 event를 알아낼 수 있다.