Programming Language/Android Programming

대화상자[라디오]

D4tai1 2018. 10. 27.

1. 대화상자

▶ 사용자에게 주요사항을 알려주고 그에 따른 선택을 하도록 하는 것을 말한다.

1) 설정순서

 [1] 대화상자 생성

 [2] 용도에 따른 설정

 [3] 대화상자 화면 출력

 

2) 클래스와 메소드

 [1] AlertDialog.Builder 클래스로 생성한다.

 [2] setTitle( ) -> 제목설정

 [3] setMessage( ) -> 내용 입력

 [4] setIcon( ) -> 아이콘 설정

 [5] setPositiveButton( ) -> OK버튼

 [6] setNegativeButton( ) -> Cancel버튼

 [7] setItems( ) -> 목록출력

 [8] setSingleChoiceItems( ) -> 라디오버튼 목록 출력

 [9] setMultiChoiceItems( ) -> 체크박스 목록 출력

 [10] show( ) -> 나타내기

 

 

 2) activity_main.xml 설정

 

▶ ActiveMain.xml을 위와 같이 설정해준다.

▶ gravity를 center로 부여하여 버튼을 가운대로 배치한다.

 

3) MainActivity.java 소스

 

package com.example.d4tai1.pro20181022a_1;

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

public class MainActivity extends AppCompatActivity {
    Button btnDialog;
    //필드로 위에 적어주어야 모든영역에서 접근이 가능하다.

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

        final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};

        btnDialog = (Button) findViewById(R.id.btnDialog);
        btnDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("대화상자 제목");
                dlg.setMessage("내용입니다.");
                
                dlg.setIcon(R.mipmap.ic_launcher);

                dlg.setNegativeButton("취소", null);
                dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
                    }
                });
                //파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
                //모든 리스너는 인터페이스

                dlg.show();
            }
        });
    }
}

 

package com.example.d4tai1.pro20181022a_1;

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

public class MainActivity extends AppCompatActivity {
    Button btnDialog;
    //필드로 위에 적어주어야 모든영역에서 접근이 가능하다.

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

        final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};

        btnDialog = (Button) findViewById(R.id.btnDialog);
        btnDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("대화상자 제목");
                //dlg.setMessage("내용입니다.");
       
                dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // int which 가 클릭한 배열의 index값이다.
                        btnDialog.setText(versionArray[which]);
                    }
                });
                //.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
                //파라미터 = 배열명, 해당하는 것의 이벤트 내용

                dlg.setIcon(R.mipmap.ic_launcher);
                dlg.setNegativeButton("취소", null);
                dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
                    }
                });
                //파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
                //모든 리스너는 인터페이스

                dlg.show();
            }
        });
    }
}

 

package com.example.d4tai1.pro20181022a_1;

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

public class MainActivity extends AppCompatActivity {
    Button btnDialog;
    //필드로 위에 적어주어야 모든영역에서 접근이 가능하다.

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

        final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};

        btnDialog = (Button) findViewById(R.id.btnDialog);
        btnDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("대화상자 제목");
                //dlg.setMessage("내용입니다.");

                /*
                dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // int which 가 클릭한 배열의 index값이다.
                        btnDialog.setText(versionArray[which]);
                    }
                });
                //.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
                //파라미터 = 배열명, 해당하는 것의 이벤트 내용
                */

                dlg.setSingleChoiceItems(versionArray, -1, new DialogInterface.OnClickListener() {
                    //default값으로 아무것도 체크를 하지 않고 확인을 누를 경우는 -1을 반환한다.
                    //결과적으로 아무런 일도 일어나지 않는다.
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        btnDialog.setText(versionArray[which]);
                    }
                })


                dlg.setIcon(R.mipmap.ic_launcher);

                dlg.setNegativeButton("취소", null);
                dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
                    }
                });
                //파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
                //모든 리스너는 인터페이스

                dlg.show();
            }
        });
    }
}

 

package com.example.d4tai1.pro20181022a_1;

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

public class MainActivity extends AppCompatActivity {
    Button btnDialog;
    //필드로 위에 적어주어야 모든영역에서 접근이 가능하다.

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

        final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};
        final boolean [] checkArray = new boolean[]{true, false, true};

        btnDialog = (Button) findViewById(R.id.btnDialog);
        btnDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("대화상자 제목");
                //dlg.setMessage("내용입니다.");

                /*
                dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // int which 가 클릭한 배열의 index값이다.
                        btnDialog.setText(versionArray[which]);
                    }
                });
                //.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
                //파라미터 = 배열명, 해당하는 것의 이벤트 내용
                */

                /*
                dlg.setSingleChoiceItems(versionArray, -1, new DialogInterface.OnClickListener() {
                    //default값으로 아무것도 체크를 하지 않고 확인을 누를 경우는 -1을 반환한다.
                    //결과적으로 아무런 일도 일어나지 않는다.
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        btnDialog.setText(versionArray[which]);
                    }
                });
                */
                dlg.setMultiChoiceItems(versionArray, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
                    String strValue = "";

                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        for (int i = 0; i < checkArray.length; i++) {
                            if (checkArray[i]) {
                                strValue += versionArray[i] + " ";
                            }
                        }
                        btnDialog.setText(strValue);
                        //체크는 다 되지만
                        //setItems의 특성 = 맨 마지막에 클릭한 것이 나오게된다.
                    }
                });

                        dlg.setIcon(R.mipmap.ic_launcher);

                dlg.setNegativeButton("취소", null);
                dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
                    }
                });
                //파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
                //모든 리스너는 인터페이스

                dlg.show();
            }
        });
    }
}

 

4) 시연

 

 

 

 

 

 

'Programming Language > Android Programming' 카테고리의 다른 글

내장메모리 접근  (0) 2018.11.05
대화상자[입력]  (0) 2018.10.27
메세지 띄우기  (0) 2018.10.09
다중메뉴  (0) 2018.10.09
메뉴 라디오버튼  (3) 2018.10.09

댓글