알림 대화상자 보여주기

OneTwoThree·2022년 8월 7일

부스트코스 알림대화상자

알림 대화상자

알림 대화상자는 예, 아니오 같은 버튼을 누를 수 있는 대화상자이다.

package com.example.dialog;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

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

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

    public 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 dialogInterface, int i) {
                Snackbar.make(textView, "예 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
                

            }
        });
        
        builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Snackbar.make(textView, "아니오 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }


}

버튼을 만들고 리스너를 등록하고 showMessage 메소드를 호출하게 할것이다.
showMessage 메소드는 내가 따로 정의

showMessage 메소드 내에서는 AlertDialog.Builder 객체를 생성함 이게 대화상자다
set ~~ 메소드로 제목, 메시지 아이콘등 설정한다.
setPositive버튼은 긍정의미의 버튼을 의미한다.
버튼 이름과 버튼을 눌렀을 때 동작할 리스너를 등록한다.
리스너의 onClick 메소드를 오버라이딩 해서 정의해주면 예 버튼을 눌렀을때 어떻게 동작할 지 정할 수 있다.

긍정 버튼과 부정 버튼을 만든다.
버튼을 누르면 스낵바가 표시되게 할 건데 스낵바 추가를 위해 앞에서 배운 것처럼 라이브러리 추가를 먼저 해준다.
그리고 나서 Snackbar.make 메소드로 스낵바를 만든다
이 때 뷰 하나를 전달해 줘야 해서 textView를 xml파일에 하나 만들었다.

그리고 builder를 create 해야 대화상자가 생성되는 것이다.
create하고 show를 호출해서 화면에 보이도록 한다.

package com.example.nosnackbar;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

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

    }

    public 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 dialogInterface, int i) {
                Toast toast = Toast.makeText(getApplicationContext(),"예를 눌렀습니다",Toast.LENGTH_LONG);
                toast.show();
            }
        });

        builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast toast = Toast.makeText(getApplicationContext(),"아니오를 눌렀습니다",Toast.LENGTH_LONG);
                toast.show();
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

이건 내가 snackbar를 사용하려니까 자꾸 오류가 나서 해결하려고 해도 안되고..
일단 토스트를 대신 이용한 코드이다.

이렇게 대화상자가 표시된다. 버튼을 누르면

이렇게 토스트 메시지가 표시된다.

0개의 댓글