안드로이드(Android) 다이얼로그(Dialog) 키보드 Back key 눌렀을 때 종료하는 방법 |
환경 : Eclipse Mars, Android 4.2.2 |
AlertDialog 를 사용할 때 팝업창을 띄우고 종료할려면 팝업창 내부에 확인이나 취소 버튼 이벤트 소수를 구현해야 합니다. 하지만 사용자들은 팝업창이 뜬 상태에서 기기에 있는 back 키를 눌렀을 때 팝업창이 사라질거라고 생각합니다. AlertDialog 구현시 Back Key 를 눌렀을 때 팝업창을 종료시키는 방법에 대해 알아 보겠습니다.
▼ 팝업창에서 기기의 키를 인식하기 위해서는 setOnKeyListener() 을 셋팅해야 합니다. 인수로 DialogInterface.OnKeyListener 객체를 생성해서 넘기시면 됩니다. 기본함수인 onKey() 에서 keyCode 가 KeyEvent.KEYCODE_BACK 인 값이 기기에서 Back 키를 누를 때 값입니다. KeyEvent.KEYCODE_BACK 일때 어플을 종료하는 finish() 와 다이얼로그를 종료하는 dismiss() 함수를 차례대로 호출합니다.finish() 만 하면 될 것 같지만 dialog.dismiss() 를 하지 않으면 메모리 릭이 일어나므로 차례대로 해주시길 바랍니다.
// key 셋팅 alertDialogBuilder .setOnKeyListener(new DialogInterface.OnKeyListener() { public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); dialog.dismiss(); return true; } return false; } });
▼ 아래는 기기에서 Back Key 를 눌렀을 때 AlertDialog 를 닫는 전체 Activity 소스입니다. AlertDialog.Builder 로 Builder 를 생성하고 setOnKeyListener() 를 셋팅하였습니다.
import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class AlertDialogActivity extends Activity implements OnClickListener { final Context context = this; private Button button; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alert_dialog); button = (Button) findViewById(R.id.btn_alert); // 클릭 이벤트 button.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_alert: AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context); // 제목셋팅 alertDialogBuilder.setTitle("프로그램 안내"); // key 셋팅 alertDialogBuilder .setOnKeyListener(new DialogInterface.OnKeyListener() { public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //dialog.dismiss(); return true; } return false; } }); // AlertDialog 셋팅 alertDialogBuilder .setMessage("공지사항 내용표현") .setCancelable(false) .setPositiveButton("종료", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int id) { // 프로그램을 종료한다 AlertDialogActivity.this.finish(); } }) .setNegativeButton("취소", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int id) { // 다이얼로그를 취소한다 dialog.cancel(); } }); // 다이얼로그 생성 AlertDialog alertDialog = alertDialogBuilder.create(); // 다이얼로그 보여주기 alertDialog.show(); break; default: break; } } }
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) 가로 세로 모드 자동회전 고정하는 방법 (0) | 2019.10.30 |
---|---|
안드로이드(Android) 사용자정의 진행 다이얼로그(Custom Progress Dialog) 만드는 방법 (5) | 2019.10.28 |
안드로이드(Android) 다이얼로그(Dialog) Animation 효과 넣는 방법 (1) | 2019.10.28 |
안드로이드(Android) Theme.dialog 로 Activity 화면을 팝업(dialog) 만드는 방법 (0) | 2019.10.27 |
안드로이드(Android) 기본 알림창인 AlertDialog 에 ListView 표현하는 방법 (3) | 2019.10.26 |
안드로이드(Android) 기본 알림창 AlertDialog 에서 선택 목록창과 옵션창 띄우기 (0) | 2019.10.25 |
안드로이드(Android) 사용자정의 다이얼로그(Custom Dialog) 만드는 방법 (0) | 2019.10.25 |
안드로이드(Android) 기본 알림창 AlertDialog 띄우는 방법 (0) | 2019.10.24 |