이 튜토리얼에서는 안드로이드 앱에서 AlertDialog(경고 대화상자) 안에 라디오 버튼 목록을 추가하는 방법을 단계별로 알아봅니다. 라디오 버튼 목록은 사용자가 여러 항목 중 하나만 선택할 수 있도록 할 때 유용하며, setSingleChoiceItems() 메서드를 사용하면 손쉽게 구현할 수 있습니다.
1단계 — 새 프로젝트 생성
Android Studio를 실행하고 File → New Project 메뉴로 이동한 후, 새 프로젝트 생성에 필요한 모든 정보를 입력하여 프로젝트를 만듭니다.
2단계 — 레이아웃 XML 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:gravity = "center" android:layout_height = "match_parent"> <TextView android:id = "@+id/click" android:layout_width = "wrap_content" android:textSize = "30sp" android:layout_height = "wrap_content" android:text = "Click"/> </LinearLayout>
위 코드에서는 화면 중앙에 배치된 TextView 하나를 선언했습니다. 이 TextView를 클릭하면 대화상자가 열리도록 구성할 것입니다.
3단계 — MainActivity.java 코드 작성
src/MainActivity.java 파일에 아래 코드를 추가합니다.
package com.example.myapplication;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView text;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.click);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog();
}
});
}
private void showAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("AlertDialog");
String[] items = {"java","android","Data Structures","HTML","CSS"};
int checkedItem = 1;
alertDialog.setSingleChoiceItems(items, checkedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
Toast.makeText(MainActivity.this, "Clicked on java", Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(MainActivity.this, "Clicked on android", Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this, "Clicked on Data Structures", Toast.LENGTH_LONG).show();
break;
case 3:
Toast.makeText(MainActivity.this, "Clicked on HTML", Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this, "Clicked on CSS", Toast.LENGTH_LONG).show();
break;
}
}
});
AlertDialog alert = alertDialog.create();
alert.setCanceledOnTouchOutside(false);
alert.show();
}
}핵심 코드 살펴보기
- setSingleChoiceItems(items, checkedItem, listener): 문자열 배열과 기본 선택 항목의 인덱스, 그리고 클릭 리스너를 전달하여 라디오 버튼 목록을 생성합니다. 여기서는
checkedItem = 1로 설정했기 때문에 두 번째 항목인 "android"가 처음부터 선택된 상태로 표시됩니다. - setCanceledOnTouchOutside(false): 대화상자 바깥 영역을 터치해도 닫히지 않도록 설정합니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 모바일 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run(실행) 아이콘을 클릭하세요. 옵션 목록에서 자신의 모바일 기기를 선택하면, 기기에 아래와 같은 기본 화면이 표시됩니다.

이제 화면의 TextView를 클릭하면 다음과 같이 라디오 버튼 목록이 포함된 Alert Dialog가 열립니다.

목록에서 항목을 선택할 때마다 해당 항목에 맞는 Toast 메시지가 화면 하단에 표시되는 것을 확인할 수 있습니다. 이처럼 setSingleChoiceItems()를 활용하면 별도의 커스텀 레이아웃 없이도 간단하게 라디오 버튼 선택 목록 대화상자를 구현할 수 있습니다.