Android

Android - Alert(알림 창)

BEOKS 2020. 1. 18. 16:31

Alert 대화 알림상자

설명: 대화알림상자는 흔히 봐왔던 작은 경고창(예, 아니오)를 의미합니다.


이번에는 대화알림상자에서

1. 만드는법
2. 제목, 아이콘 그리고 메세지 내용의 설정
3. 예, 아니오 버튼의 추가와 설정 

에 대해서 설명하겠습니다.

직관성을 위해서 코드에 주석을 달아 한번에 설명합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//이 함수는 MainActiyity.java 클래스에 포함된 함수입니다.
//어디에 쓰이는지 알고싶다면 아래의 예시 코드를 참조하시기바랍니다.
public void showMessage(){
        final AlertDialog.Builder builder=new AlertDialog.Builder(this);
        //우선 AlertDialog.Builder를 통해서 알림상자를 만드는 객채를 설정합니다
        builder.setTitle("안내");
        //제목을 설정합니다.
        builder.setMessage("종료하시겠습니까");
        //내용을 설정합니다.
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        //제목에 추가할 아이콘을 추가합니다. 여기서는 기본적으로 제공되는 아이콘을 사용했습니다.
        //이제 부정 버튼을 설정해봅시다.
        builder.setNegativeButton("아니오"new DialogInterface.OnClickListener() {
            //함수의 첫인자는 버튼의 메세지, 두번째는 리스너입니다.
            //여기서 리스너는 DialogInterface 클래스의 것을 사용합니다.
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Snackbar.make(textView,"아니오 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
                //아니오 버튼이 눌리면 스낵바를 출력합니다.
            }
        });
        //마찬가지로 긍정 버튼을 설정합니다.
        builder.setPositiveButton("예"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Snackbar.make(button,"예 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
            }
        });
        //빌더에서 알림dialog를 새로 생성해줍니다. 빌더는 빌더일뿐 결과 객체가 아닙니다.
        AlertDialog dialog=builder.create();
        //보여주도록합니다.
        dialog.show();
    }
cs

아래는 이를 활용한 예시입니다.

Main_Activity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.jasonlee.ed_with_android_studio;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    TextView textView;
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button);
        textView=(TextView)findViewById(R.id.textView2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showMessage();
            }
        });
    }
    public void showMessage(){
        final AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setTitle("안내");
        builder.setMessage("종료하시겠습니까");
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.setNegativeButton("아니오"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Snackbar.make(textView,"아니오 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
            }
        });
        builder.setPositiveButton("예"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Snackbar.make(button,"예 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
            }
        });
        AlertDialog dialog=builder.create();
        dialog.show();
    }
}
cs

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="알림대화상자 띄우기"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="116dp"
        android:text="알림대화상자"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
cs