들어가기 전에
앱이 실행되다가 갑자기 죽어버리면 어떤 문제인지 어떻게 알 수 있을까요?
사용자가 입력한 단어가 잘못되었을 경우에 다시 입력하라고 알려주고 싶다면 어떻게 할 수 있을까요?
앱에서 어떤 문제가 있는지를 확인하려면 디버깅을 할 수도 있지만 중간중간 확인 메시지를 콘솔에 뿌려주는 것도 한 가지 방법입니다.
더구나 사용자에게도 무언가를 알려주어야 한다면 토스트나 대화상자를 사용할 수 있습니다.
토스트나 대화상자를 어떻게 사용할 수 있는지 알아봅시다.
학습 목표
- 대화상자를 띄우는 방법을 이해해봅시다.
핵심 단어
학습하기
알림 대화상자(AlertDialog) 사용하기
알림 대화상자는 사용자에게 어떤 내용을 알려주거나 '아니오', '예' 버튼을 선택하도록 만들고 싶을 때 사용됩니다.
알림 대화상자는 AlertDialog 객체를 만들고 show 메소드를 이용해 화면에 표시하게 됩니다.
AlertDialog 객체를 만들 때는 AlertDialog.Builder 객체를 사용합니다.
알림 대화상자에는 타이틀, 안내 메시지, 아이콘 그리고 예, 아니오 버튼 등을 설정할 수 있습니다.
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("안내");
builder.setMessage("종료하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String message = "확인 버튼이 눌렸습니다. ";
…중략
}
});
AlertDialog dialog = builder.create();
dialog.show();
생각해보기
- 토스트 메시지를 여러 번 띄울 때는 얼마만큼의 시간이 지연되어 보일까요?
- 알림 대화상자 외에 대화상자를 직접 만들어서 띄울 수도 있을까요?
- 대화상자에서 사용자 입력을 받을 수 있도록 대화상장 안에 입력상자를 넣고 싶다면 어떻게 해야 할까요?
참고 자료
comment
Button 도 View 를 상속한거라고 하셔서 Snackbar.make 에 TextView 대신 Button 을 넣어봤는데, 잘 동작 하네요.
@Override
public void onClick(DialogInterface dialog, int which) {
Snackbar.make(textView, "예 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
위에 make 메소드안에 첫번쨰 매개변수로 textView로 임의로 생성한 TextView를 주었잖아요.
근데 왜 스낵바가 TextView 안에서 뜨지않고 main의 맨아래에 뜨게되는건가요?
보통 토스트 메시지나, 스낵바에서는 둘다 this 메인액티비티 로 설정을 했었는데
이는 메시지를 띄울 뷰를 설정해주는 거잖아요? 근데 이번 실습의경우에는 this가 안먹히더라구요.
알림대화상자 / "예", "아니오" 의 위치는 바꿀 수가 없나요?
구글링 하여보니까 이전에는 예, 아니오 순이였으나 업데이트 후에
오른손잡이 사용자가 다수라 한손 조작을 편하게 사용하기 위하여
"예" 버튼이 오른쪽에 위치한다고 밖에 나오지 않습니다.. 어떻게 할 수 있을까요?
build.* 안에 있는 메소드 중에는 위치를 바꾸는게 없는것 같습니다.
생각해보기가 저번편과 중복됩니다.