본문으로 바로가기

 감성 자동제어 

[안드로이드 스튜디오]대화상자(dialog)사용방법

안녕하세요! 오늘은 버튼을 클릭했을 때 AlertDialog를 이용한 대화상자(dialog)를 사용하는 방법에 대해서 알아보보록 하겠습니다!

 

Activity_main.xml(layout)

버튼을 추가하여 레이아웃을 구성해주도록 하겠습니다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <Button
        android:id="@+id/btn_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="대화상자 생성"
        android:textSize="30dp" />
    
</LinearLayout>
cs

 

MainActivity(Class)

총 5단계를 통해 대화상자를 만들어 보는 방법에 대해 알아보겠습니다.

[1] 기본 대화상자 생성

[2] 버튼이 2개인 대화상자 생성 (버튼 클릭시 토스트 메시지 출력)

[3] 기본 목록 생성 (목록 클릭시 해당 목록 이름 토스트 메시지 출력)

[4] 라디오 버튼 목록 생성 (목록 클릭시 해당 목록 이름 토스트 메시지 출력)

[5] 체크박스 버튼 목록 생성 (목록 클릭시 해당 목록 이름 토스트 메시지 출력)

 

1. 기본 대화상자 생성

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
package com.example.dialog;
 
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends AppCompatActivity {
 
    Button mbtn_dialog;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mbtn_dialog = findViewById(R.id.btn_dialog);
 
        mbtn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //대화상자 생성//
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 
                builder.setTitle("제목을 입력합니다");     //setTitle -> 제목설정
                builder.setMessage("내용을 입력합니다");   //setMessage -> 내용입력
               builder.setIcon(R.mipmap.ic_launcher);    //setIcon -> 아이콘 설정
                builder.show();                           //대화상자(dialog)화면 출력
            }
        });
    }
}
cs

 

2. 버튼이 2개인 대화상자 생성

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
public class MainActivity extends AppCompatActivity {
 
    Button mbtn_dialog;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mbtn_dialog = findViewById(R.id.btn_dialog);
 
        mbtn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //대화상자 생성//
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 
                builder.setTitle("제목입니다");            //setTitle -> 제목설정
                builder.setMessage("내용입니다.");         //setMessage -> 내용입력
               builder.setIcon(R.mipmap.ic_launcher);    //setIcon -> 아이콘 설정
 
                //  setPositiveButton -> "OK"버튼  //
                builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this"확인 버튼을 눌렀습니다.",
                                Toast.LENGTH_SHORT).show();
                    }
                });
 
                //  setNegativeButton -> "Cancel" 버튼  //
                builder.setNegativeButton("취소"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this"취소 버튼을 눌렀습니다.",
                                Toast.LENGTH_SHORT).show();
                    }
                });
 
               builder.show();      //대화상자(dialog)화면 출력
            }
        });
    }
}
cs

 

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
35
36
37
38
39
40
41
42
43
public class MainActivity extends AppCompatActivity {
 
    Button mbtn_dialog;
    String[] colorArray = new String[] {"빨강""주황""노랑""초록"};  //목록 변수 지정
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mbtn_dialog = findViewById(R.id.btn_dialog);
 
        mbtn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //대화상자 생성//
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 
                builder.setTitle("좋아하는 색은?");            //setTitle -> 제목설정
               builder.setIcon(R.mipmap.ic_launcher);         //setIcon -> 아이콘 설정
 
                //  setPositiveButton -> "OK"버튼  //
                builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this"확인 버튼을 눌렀습니다.",
                                Toast.LENGTH_SHORT).show();
                    }
                });
                
                //  setItems -> 목록출력  //
                builder.setItems(colorArray, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this,colorArray[i],
                                Toast.LENGTH_SHORT).show();
                    }
                });                                     
 
               builder.show();          //대화상자(dialog)화면 출력             
        });
    }
}
cs

 

4. 라디오 버튼 목록 생성

"colorArray" 배열을 추가했습니다!

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
public class MainActivity extends AppCompatActivity {
 
    Button mbtn_dialog;
    String[] colorArray = new String[] {"빨강""주황""노랑""초록"};
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mbtn_dialog = findViewById(R.id.btn_dialog);
 
        mbtn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 대화상자 생성 //
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 
                builder.setTitle("좋아하는 색은?");            //setTitle -> 제목설정
               builder.setIcon(R.mipmap.ic_launcher);        //setIcon -> 아이콘 설정
 
                //  setPositiveButton -> "OK"버튼  //
                builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this"확인 버튼을 눌렀습니다.",
                                Toast.LENGTH_SHORT).show();
                    }
                });
 
                //  setSingleChoiceItems -> 라디오버튼 목록 출력  //
                builder.setSingleChoiceItems(colorArray, 0new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, colorArray[i], 
Toast.LENGTH_SHORT).show();
                    }
                });          
 
               builder.show();      //대화상자(dialog)화면 출력
            }
        });
    }
}
cs
 

5. 체크박스 버튼목록 생성

1) "booleansArray" 배열을 추가했습니다!

2) 체크박스에 "체크" 표시가 될경우에만 토스트 메시지를 띄우기 위해 조건문을 추가했습니다.

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
public class MainActivity extends AppCompatActivity {
 
    Button mbtn_dialog;
    String[] colorArray = new String[]{"빨강""주황""노랑""초록"};
    boolean[] booleansArray = new boolean[]{truefalsefalsetrue};
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mbtn_dialog = findViewById(R.id.btn_dialog);
 
        mbtn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //대화상자 생성//
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 
                builder.setTitle("좋아하는 색은?");           //setTitle -> 제목설정
               builder.setIcon(R.mipmap.ic_launcher);        //setIcon -> 아이콘 설정
 
                //  setPositiveButton -> "OK"버튼  //
                builder.setPositiveButton("확인"new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this"확인 버튼을 눌렀습니다.",
                                Toast.LENGTH_SHORT).show();
                    }
                });
 
                //  setSingleChoiceItems -> 체크박스 목록 출력  //
                builder.setMultiChoiceItems(colorArray, booleansArray, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                        if (booleansArray[i] == true) {
                            Toast.makeText(MainActivity.this, colorArray[i],
                                    Toast.LENGTH_SHORT).show();
                        }
 
                    }
                });
 
               builder.show();           //대화상자(dialog)화면 출력
            }
        });
    }
}
cs
 

마무리

1) setTitle -> 제목설정

2) setMessage -> 내용입력

3) setIcon - > 아이콘 설정

4) setPositiveButton -> "ok" 버튼

5) setNegativeButton -> "cancel" 버튼

6) setItem -> 목록 출력

7) setSingleChoiceItems -> 라디오버튼 목록

8) setMultiChoiceItems-> 체크박스 목록

 

이상으로 대화상자(dialog)를 사용하는 방법에 대해서 알아보았습니다. 감사합니다!!

긴 글 읽느라 수고하셨습니다.

오늘도 일상 속 소소한 행복을 느끼길 바랍니다!

 

더 많은 정보

https://engineering-mino.tistory.com/