티스토리 뷰



이 자료들은 팁스소프트에서 제공하는 [ 알짜배기 ] 프로그램을 이용하면 더 편리하게 볼수 있습니다.
* 알짜배기 프로그램 받기 - http://www.tipssoft.com/bulletin/tb.php/QnA/8406
* 안드로이드 강좌 목록 - http://www.tipssoft.com/bulletin/tb.php/old_bbs/501
안드로이드 시스템에서는 사용자에게 알림 사항을 전달하거나 사용자의 선택을 유도하기 위해서
다이얼로그를 사용합니다. 기본적으로 액티비티에서 다이얼로그를 실행시키면 부모 액티비티는
선택할 수 없는 상태가 되면서 다이얼로그만 사용이 가능해집니다. 그러나 부모 액티비티를 사용자가
사용할 수는 없지만 백그라운드에서 부모 액티비티의 실행 흐름은 계속 진행됩니다. 그렇기 때문에
다이얼로그를 사용할 때에는 이러한 실행 방식에 대하여 정확하게 이해해야 합니다.

다이얼로그는 Dialog 클래스에서 제공하고 있지만 쉽고 간편하게 사용할 수 있도록 Dialog 클래스를
상속받은 AlertDialog 클래스를 제공하고 있습니다. 안드로이드에서는 다이얼로그를 생성할 때
AlertDialog 클래스를 사용하는 것을 권장하고 있으며 해당 클래스를 이용하여 생성된 다이얼로그는
다음과 같은 특징을 가집니다.
- 기본적으로 0 개 ~ 3 개의 버튼 사용 가능
(PositiveButton, NeutralButton, NegativeButton 이라는 명칭을 사용하여 각 버튼을 설정합니다.
각 버튼의 이름과 기능은 연관성이 없으며 단지 버튼을 구분하기위해 명명한 것입니다.
setNegativeButton 메소드를 호출하여 버튼을 설정하면 하나의 버튼이 다이얼로그에서 출력되고
모든 버튼을 설정하면 PositiveButton, NeutralButton, NegativeButton 순서대로 버튼이 출력됩니다.)
- 다이얼로그에 리스트뷰 사용 가능
- 체크박스나 라디오 버튼을 포함하는 선택 가능한 항목들을 사용 가능
- 제목이나 알림 내용이 출력되는 부분을 사용자 정의 뷰로 구현 가능

이번 강좌에서는 간단하게 일회성으로 사용할 수 있는 AlertDialog 클래스를 이용한 다이얼로그를
실행시키는 방법에 대하여 설명하도록 하겠습니다.
1. AlertDialog.Builder 클래스
AlertDialog 클래스를 이용해서 다이얼로그를 실행시키려면 해당 다이얼로그를 쉽게 구성할 수 있도록
AlertDialog 클래스 내부에 nested class 로 정의된 AlertDialog.Builder 클래스를 사용해야 합니다.
해당 빌더는 AlertDialog 객체로 다이얼로그를 구성하는 번거로운 작업을 대행하여 해준다는 이점
때문에 사용하기도 하지만 AlertDialog 클래스의 생성자가 protected 로 정의되어 있어서 외부에서
생성자를 호출하여 객체를 인스턴스하는 것 자체가 불가능하기 때문에 반드시 사용해야 합니다.
AlertDialog.Builder 객체로 간단하게 다이얼로그를 구성할 때 필요한 메소드는 다음과 같습니다.
1.1 AlertDialog.Builder setTitle(CharSequence title);
AlertDialog.Builder setTitle(int titleId);
다이얼로그에 출력될 제목을 설정하는 메소드입니다. 매개 변수는 직접 문자열을 구성하여
설정하거나 string 리소스에 정의된 문자열 ID 를 입력하도록 오버로딩 되어 있습니다.
이 메소드는 제목이 설정된 빌더를 반환합니다.
1.2 AlertDialog.Builder setMessage(CharSequence message);
AlertDialog.Builder setMessage(int messageID);
다이얼로그에 출력될 알림 내용을 설정하는 메소드입니다. 매개 변수에는 직접 문자열을 구성하여
설정하거나 string 리소스에 정의된 문자열 ID 를 입력하도록 오버로딩 되어 있습니다.
이 메소드는 알림 내용이 설정된 빌더를 반환합니다.
1.3 AlertDialog.Builder setIcon(Drawable icon);
AlertDialog.Builder setIcon(int iconId);
다이얼로그에 출력될 아이콘을 설정하는 메소드입니다. 매개 변수에는 Drawable 객체에 저장된
아이콘을 설정하거나 리소스 폴더에 존재하는 이미지 파일의 ID 를 입력하도록 오버로딩 되어
있습니다. 이 메소드는 아이콘이 설정된 빌더를 반환합니다.
1.4 AlertDialog.Builder setXXXButton(CharSequence text, DialogInterface.OnClickListener listener);
AlertDialog.Builder setXXXButton(int textId, DialogInterface.OnClickListener listener);
AlertDialog 클래스로 다이얼로그를 생성했을 때 사용할 수 있는 세가지의 버튼을 설정하는 메소드
입니다. Positive / Negative / Neutral 키워드를 이용해서 setPositiveButton 처럼 메소드를
호출하면 되고, 이 때 세가지 버튼에 대한 메소드들은 모두 동일한 매개 변수를 가집니다.
버튼의 캡션명을 설정하기 위해서는 매개 변수 text 에 직접 문자열을 구성하여 전달하거나
string 리소스에 등록된 문자열의 ID 를 전달하면 됩니다. 또한 해당 버튼이 눌렸을 때 수행할
행위를 정의하기 위해서 두번째 매개 변수에 리스너를 전달해줍니다. 리스너에 대한 대한 내용은
다음 강좌를 통해 설명하도록 하겠습니다.
빌더.setPositiveButton("Left Button", null);
빌더.setNeutralButton("Center Button", null);
빌더.setNegativeButton("Right Button", null);
위와 같이 코드를 구성하면 버튼을 눌렀을 때 기본적으로 다이얼로그가 종료되는 세개의 버튼이
다이얼로그 하단에 출력됩니다. 만약 하나 또는 두개의 버튼을 사용하고 싶다면 세 개의 메소드
중에서 하나 또는 두개를 선택적으로 사용하시면 됩니다. 예를 들어 setPositiveButton 메소드와
setNeutralButton 메소드를 사용했다면 Left Button 과 Right Button 캡션을 가진 버튼 두개가
다이얼로그에 생길 것입니다.
2. 간단한 다이얼로그를 사용하는 예제
이제 1번 항목에서 살펴본 AlertDialog.Builder 를 이용하여 다이얼로그를 생성해보도록 하겠습니다.
public class ExamDialogActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// XML 파일에 구성한 레이아웃을 액티비티에 적용한다.
setContentView(R.layout.main);

// ID 가 R.id.btn_show_dlg 인 버튼을 얻는다.
Button btn = (Button) findViewById(R.id.btn_show_dlg);
// 버튼을 클릭했을 때 원하는 작업을 수행할 수 있도록 OnClickListener 를 등록한다.
btn.setOnClickListener(new OnClickListener() {
public void onClick(View view)
{
// AlertDialog 를 생성해주는 AlertDialog.Builder 객체를 생성한다.
AlertDialog.Builder builder = new AlertDialog.Builder(ExamDialogActivity.this);

// 다이얼로그의 제목을 설정한다.
builder.setTitle("Simple Dialog~!!");
// 다이얼로그에 출력될 메세지 내용을 적는다.
builder.setMessage("This is a Simple Dialog Exam~~!!!!!");
// 다이얼로그에 출력될 아이콘의 리소스 ID 를 명시한다.
builder.setIcon(R.drawable.icon);

// 좌측(Positive Button) 에 출력될 버튼과 우측(Neutral Button) 에 출력될 버튼을 설정한다.
builder.setPositiveButton("Left Button", null);
builder.setNeutralButton("Right Button", null);

// 빌더에 설정한 속성들을 이용하여 다이얼로그를 생성하고, 출력시킨다.
builder.show();

// 다이얼로그를 출력한 후에 다음 코드가 계속 실행되는지 여부를 판단하기 위한 Toast
Toast.makeText(ExamDialogActivity.this, "after Show Dialog", Toast.LENGTH_SHORT).show();
}
});
}
}
위의 코드를 실행하면 아래의 그림과 같은 실행 화면을 출력합니다. 위에서 언급했듯이 안드로이드의
다이얼로그가 실행되어도 부모 액티비티는 중지되지 않고 계속 실행되기 때문에 builder.show 메소드로
다이얼로그를 실행시키더라도 액티비티의 다음 수행 코드인 Toast.makeText(...).show(); 는 이어서
바로 수행됩니다. 그래서 다이얼로그와 함께 토스트가 출력됩니다.


댓글