Life Life Life

Dialog 및 ProgressDialog 하드웨어 Key 막기 본문

개발/안드로이드

Dialog 및 ProgressDialog 하드웨어 Key 막기

네버그린 2014. 4. 2. 11:36

안드로이드에서 종종 Dialog, ProgressDialog에 대해 하드웨어 키을 못하게 막는 경우가 발생한다.

1. Back Key 막기
AlertDialog.Builder에서 setCancelable 설정을 true 처리하면 된다.
Ex)
AlertDialog.Builder alertDlg = new AlertDialog.Builder(context);
alertDlg.setCancelable(true);
alertDlg.setTitle("안내");
alertDlg.setMessage("'종료하시겠습니까?");
alertDlg.setPositiveButton("종료", new DialogInterface.OnClickListener()
{

@Override
public void onClick(DialogInterface dialog, int which)
{
finish();
dialog.dismiss();
}
}).setNegativeButton("취소", new DialogInterface.OnClickListener()

{

@Override
public void onClick(DialogInterface dialog, int which) 
{
dialog.dismiss();
}
}).show();



2. Search Key 막기
다이얼로그에서 setCancelable으로 Back Key을 막아도 검색키로 취소하는 경우가 생길 수 있다.
이럴경우에는 다이알로그에서 setOnKeyListener을 오버라이드해서 처리해야 막을 수 있다.
Ex) 1번 Back Key막는 소스에서 밑에 소스을 추가하면 막을 수 있다.
.setOnKeyListener(new DialogInterface.OnKeyListener() {

@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
if(keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) {
return true;
}
return false;
}
})
출처 : http://stackoverflow.com/questions/3373342/progressdialog-disappears-when-search-key-on-the-phone-is-pressed