안드로이드 스튜디오 대화상자(dialog) 사용하기

안녕하세요 오늘은 대화 상자(dialog)를 사용해서

 

화면에 메시지를 나타낸 후 확인이나 취소 같은

 

사용자의 선택을 받아들이는 예제를 해보겠습니다.

 

보통 다이얼로그는 토스트 메시지보다 좀 더 강력한 메시지를 보낼 때 사용합니다.

 

주로 사용자에게 중요한 사항을 알려준 후,

 

사용자가 다시 어떤 선택을 하게 하는 게 목적입니다

 

그래서 다이얼로그가 뜨면 사용자가 계속 진행할지 여부를 선택하게 할 때 사용합니다.

 

다이얼로그 중에 커스텀 다이얼로그도 있는데

 

오늘은 보통사용하는 AlertDialog를 사용하겠습니다.

 

일단 activity_main에 버튼 하나를 만들어 줍니다.

 

<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"
    android:gravity="center_horizontal"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button1"
        android:text="대화상자"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
        
</LinearLayout>

이렇게 코드를 입력하면 버튼 하나가 생성이 됩니다.

 

이제 이 버튼을 누르면 대화상자가 뜰 수 있게 자바 코드를 입력해 줍니다.

 

1. 기본대화상자

 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View view){

                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("계발에서 개발까지"); //제목
                dlg.setMessage("안녕하세요 계발에서 개발까지 입니다."); // 메시지
                dlg.setIcon(R.drawable.deum); // 아이콘 설정
//                버튼 클릭시 동작
                dlg.setPositiveButton("확인",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which) {
                        //토스트 메시지 
                        Toast.makeText(MainActivity.this,"확인을 눌르셨습니다.",Toast.LENGTH_SHORT).show();
                    }
                });
                dlg.show();
            }
        });
    }
}

 

밑에는 실행 결과입니다.

 

실행결과

 

2. 목록 대화 상자

 

밑에는 목록 대화 상자를 활용할 자바 소스입니다.

 

public class MainActivity extends AppCompatActivity {

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

        final Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View view){

                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("계발에서 개발까지"); //제목
              final String[] versionArray = new String[] {"계발","에서","개발"};
                dlg.setIcon(R.drawable.deum); // 아이콘 설정

                dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        button1.setText(versionArray[which]);
                    }
                });
//                버튼 클릭시 동작
                dlg.setPositiveButton("확인",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which) {
                        //토스트 메시지
                        Toast.makeText(MainActivity.this,"확인을 눌르셨습니다.",Toast.LENGTH_SHORT).show();
                    }
                });
                dlg.show();
            }
        });
    }
}

 

이렇게 실행을 하면 대화 상자에 입력한 목록이 생기며

 

목록 클릭 시 버튼이 바뀌는 걸 알 수 있습니다.

 

 

목록대화상자

3. 라디오 버튼 대화목록 상자

 

라디오 버튼 목록 상자를 사용하면 목록을 선택해도 대화 상자가 사라지지 않으며 목록 선택 후

 

확인을 눌러야만 대화 상자가 사라지며 버튼이 바뀝니다.

 

public class MainActivity extends AppCompatActivity {

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

        final Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View view){

                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("계발에서 개발까지"); //제목
              final String[] versionArray = new String[] {"계발","에서","개발"};
                dlg.setIcon(R.drawable.deum); // 아이콘 설정

                dlg.setSingleChoiceItems(versionArray, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        button1.setText(versionArray[which]);
                    }
                });
//                버튼 클릭시 동작
                dlg.setPositiveButton("확인",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which) {
                        //토스트 메시지
                        Toast.makeText(MainActivity.this,"확인을 눌르셨습니다.",Toast.LENGTH_SHORT).show();
                    }
                });
                dlg.show();
            }
        });
    }
}

 

 

라디오버튼이용

4. 체크박스 대화목록 상자

 

public class MainActivity extends AppCompatActivity {

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

        final Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View view){

                AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
                dlg.setTitle("계발에서 개발까지"); //제목
              final String[] versionArray = new String[] {"계발","에서","개발"};
              final boolean[] checkArray = new boolean[]{true,false,false};
                dlg.setIcon(R.drawable.deum); // 아이콘 설정

           dlg.setMultiChoiceItems(versionArray, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which, boolean isChecked) {

               }
           });
//                버튼 클릭시 동작
                dlg.setPositiveButton("확인",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int which) {
                        //토스트 메시지
                        Toast.makeText(MainActivity.this,"확인을 눌르셨습니다.",Toast.LENGTH_SHORT).show();
                    }
                });
                dlg.show();
            }
        });
    }
}

이런 식으로 체크박스 형태로도 가능합니다.

 

체크박스버튼 이용

지금까지 대화 상자를 이용하여 가능한 예제를 둘러보았습니다.

 

이런 식으로 대화 상자를 활용한다면

 

멋진 앱을 만들 수 있습니다.

 

수고하셨습니다,

댓글

Designed by JB FACTORY