대화상자는 사용자에게 간단한 메시지를 전달 후 "예", "아니오"와 같은 입력을 선택지로 준다. 대화상자를 띄우려면 AlertDialog.Builder 클래스로 대화상자 빌더 객체를 만든 후 타이틀 설정, 메시지 설정 및 각각의 버튼을 설정하고 클릭 이벤트 처리 리스너를 달아주면 된다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼을 누르면 대화상자가 뜹니다."
        android:layout_gravity="center_horizontal"
        android:textSize="20dp"
        android:layout_marginTop="50dp"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="띄우기"
        android:textSize="20dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"/>
</LinearLayout>

버튼을 누르면 대화상자가 뜬다. 텍스트뷰의 내용은 대화상자에서 어떤 버튼을 클릭했는지 표시하기 위한 용도로 만들었다.

package io.swnomad.sampledialog;

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView);
        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showMessage();
            }
        });
    }

    private void showMessage(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this); //대화상자를 만들기 위한 빌더 객체 생성
        builder.setTitle("안내"); //대화상자 제목 설정
        builder.setMessage("종료하시겠습니까?");
        builder.setIcon(android.R.drawable.ic_dialog_alert);

        //예 버튼 추가
        builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                textView.setText("\"예\" 버튼이 눌렸습니다.");
            }
        });

        //아니오 버튼 추가
        builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                textView.setText("\"취소\" 버튼이 눌렸습니다.");
            }
        });

        //취소 버튼 추가
        builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                textView.setText("\"아니오\" 버튼이 눌렸습니다.");
            }
        });

        AlertDialog dialog = builder.create(); //대화상자 생성
        dialog.show(); //대화상자 띄우기
    }
}

앱을 실행하면 아래의 화면을 확인할 수 있다.

1
2
3

+ Recent posts