|
안드로이드(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 |
