본문 바로가기
Android

[Android] 안드로이드 : 알림 대화상자 만들기

by 꿈나무 김땡땡 2019. 12. 1.

1. 알림 대화상자란?

알림 대화상자는 사용자에게 어떤 내용을 알려주거나 '아니오', '예' 버튼을 선택하도록 만들고 싶을 때 사용됩니다.

알림 대화상자는 AlertDialog 객체를 만들고 show 메소드를 이용해 화면에 표시하게 됩니다.

AlertDialog 객체를 만들 때는 AlertDialog.Builder 객체를 사용합니다.

알림 대화상자에는 타이틀, 안내 메시지, 아이콘 그리고 예, 아니오 버튼 등을 설정할 수 있습니다.

 

2. 예제 코드

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {

    TextView textView;

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

        textView = (TextView) findViewById(R.id.textView);

        Button button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 별도의 메소드를 정의해서 사용
                showMessage();
            }
        });
    }

    // 알림 대화상자 내용 만들기
    protected 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) {
                // 스낵바 띄우기
                Snackbar.make(textView, "예 버튼이 눌렸습니다.", Snackbar.LENGTH_LONG).show();
            }
        });

        builder.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 스낵바 띄우기
                Snackbar.make(textView, "아니요 버튼이 눌렸습니다.", Snackbar.LENGTH_LONG).show();
            }
        });

        // 알림 대화상자 만들기
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

댓글