앱 만들기/안드로이드

기본 다이얼로그 박스 만들기

나도 처음이야 2022. 7. 18.

안드로이드 Alert Dialog 라고 불리는 기본 다이얼로그를 만들어 봅니다.

결과는 하기와 같습니다.

Alert Dialog box

1. XML 화면구성으로 버튼을 하나 만듭니다.

   해당 버튼을 누르면 다이얼로그가 나오게 구현하기 위함 입니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Alert Dialog"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

2. 다이얼로그 박스 구현하기

   - 다이얼로그 를 구성합니다. 3개의 버튼을 달았습니다.

   - 각 버튼의 이름에는 특별한 기능이 없습니다. 개발자가 원하는 기능을 구현하면 됩니다.

   - 기본 다이얼로그 를 만들기 위해서는 AlertDialog.Builder 를 사용해야 합니다.

   - builder.show() 함수를 콜 하지 않으면 화면에 보여지지 않습니다.

public void onClick(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Alert Dialog");
    builder.setMessage("기본 다이얼로그 입니다");
    builder.setIcon(R.drawable.coffee);
    builder.setPositiveButton("Good", dialogListener);
    builder.setNegativeButton("Bad", dialogListener);
    builder.setNeutralButton("Not Bad", dialogListener);
    builder.show();
}

3. 다이얼로그 박스의 이벤트 리스너 구현하기

  - 리스너 안에서 각 버튼의 동작을 구현합니다. 

class DialogListener implements DialogInterface.OnClickListener{
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
                    switch (i){
                        case DialogInterface.BUTTON_POSITIVE:
                            Toast.makeText(MainActivity.this, "Good", Toast.LENGTH_LONG).show();
                            break;
                        case DialogInterface.BUTTON_NEGATIVE:
                            Toast.makeText(MainActivity.this, "Bad", Toast.LENGTH_LONG).show();
                            break;
                        case DialogInterface.BUTTON_NEUTRAL:
                            Toast.makeText(MainActivity.this, "Not Bad", Toast.LENGTH_LONG).show();
                            break;
                    }
    }
}

 - 별도의 리스너를 만들어서 각각의 버튼에 대한 이벤트를 구현합니다.

    만약 버튼이 하나라면, 해당 뷰에 리스너를 바로 연결하면 됩니다. 하기 처럼 말이죠.    

builder.setNeutralButton("Not Bad", dialogListener).setOnCancelListener(new DialogInterface.OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialogInterface) {
        
    }
});

 

하기는 안드로이드 개발자 페이지에서 다루는 대화상자 내용입니다.

감사합니다.

반응형

댓글