본문 바로가기

프로그래밍/안드로이드

[안드로이드] 알림창(AlertDialog) 이용하기

안녕하세요 ! 초보개발자 입니다. 

이 블로그는 개인 공부 정리용 블로그 입니다. 

혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.

그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.

그럼 시작하도록 하겠습니다.




알림창(AlertDialog) 이용하기



어플을 사용하다 보면 위와 같은 알림창을 자주 볼 수 있습니다. 이러한 것을 알림창(AlertDialog) 이라고 합니다. 이러한 알림창은 일방적으로 메시지를 전달하는 역활을 주로 하며 '네' , 혹은 '아니오' 같은 응답을 처리하는데 사용이 됩니다. 


예제를 통해서 살펴보겠습니다. 먼저 메인화면에서 버튼을 클릭하면 두번째 화면으로 넘어 갑니다. 두번째 화면은 두개의 버튼으로 이루어져 있으며 첫번째 버튼은 이전 화면으로 넘어가는 버튼이며 두번째 버튼 클릭시 위 그림과 같은 알림창을 띄울 것 입니다. '네' 를 누르면 종료가 되고 '아니오' 를 누르면 알림창만 없어지도록 해보겠습니다. 


먼저 메인 화면 xml 입니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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"
    tools:context="com.example.donghyun.toast.MainActivity">
 
    <Button
        android:id="@+id/button1"
        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" />
 
</android.support.constraint.ConstraintLayout>
 
cs

 

두번째 화면 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
30
31
32
33
34
35
36
37
38
<?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"
    tools:context="com.example.donghyun.toast.SecondActivity">
 
    <Button
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이전화면"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/finish"
        android:layout_marginRight="8dp"
        app:layout_constraintHorizontal_bias="0.571"
        app:layout_constraintVertical_bias="0.498" />
 
    <Button
        android:id="@+id/finish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="종료"
        android:layout_marginRight="80dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="8dp"
        app:layout_constraintVertical_bias="0.498" />
</android.support.constraint.ConstraintLayout>
 
cs


메인 자바소스 입니다.


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
package com.example.donghyun.toast;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
Button button ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),SecondActivity.class);
                startActivity(i);
                finish();
            }
        });
    }
 
}
 
cs


두번째 소스 입니다.


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
50
51
52
53
package com.example.donghyun.toast;
 
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    Button back , finish;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
 
        back = (Button)findViewById(R.id.back);
        back.setOnClickListener(this);
        finish = (Button)findViewById(R.id.finish);
        finish.setOnClickListener(this);
 
    }
 
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.back:
                Intent i = new Intent(this,MainActivity.class);
                startActivity(i);
                break;
            case R.id.finish:
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.setTitle("종료");
                alert.setMessage("종료 하시겠습니까 ? ");
                alert.setPositiveButton("네"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        finish();
                    }
                });
                alert.setNegativeButton("아니오"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.cancel();
                    }
                });
                alert.show();
                break;
        }
    }
}
 
cs


알림창의 타이틀은 setTitle() 메소드를 이용하고 내용은 setMessage() 메소드를 이용합니다. '네','아니오' 와 같은 버튼의 설정은 setPositiveButton() 메소드와 setNegativeButton() 메소드를 이용 합니다. 이 메소드는 OnClickListener를 설정 할 수 있습니다. 


직접 실행하여 어떻게 동작하는지 보세요.


이상으로 알림창(AlertDialog)에 대해서 알아 보았습니다.