본문 바로가기
개발/안드로이드 어플

⑦안드로이드어플개발 - AlertDialog 다이아로그 / 팝업창 출력 / 대화 / 모달창

by 외노자개발 2022. 11. 29.
반응형

Dialog / 대화창 확인 


 

대화 상자는 사용자의 의사 결정과 추가 정보를 묻는 작은 창입니다. 대화 상자가 전체 화면으로 표시되지 않으며 일반적으로 다음 단계로 진행하기 전에 사용자에게 행동을 요청하는 모달 이벤트에 사용됩니다.

 

AlertDialog


여기에서는 간단한 메시지와 예/아니오 응답을 받는 AlertDialog를 만듭니다.

AlertDialog는 제목, 최대 3개의 버튼, 선택 가능한 항목 목록 또는 사용자 지정 레이아웃을 표시할 수 있는 대화 상자입니다.

 

반면 DialogFragment를 사용하면 더 복잡한 경고를 만들 수 있으며 대화 상자를 만들고 모양을 관리하는 데 필요한 모든 컨트롤을 제공합니다.

 

단순하게 Alert를 만들 수 있다.

new AlertDialog.Builder(this)AlertDialog 
    .setTitle("Title")
    .setMessage("Message")
    .setPositiveButton("OK", null)
    .show();

 

다이아로그 코드 작성 (메시지 출력뿐 아니라 입력까지 가능하게 개)


activity_main.xml

<Button
    android:id="@+id/btn_dialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Dialog"/>
<TextView
    android:id="@+id/tv_result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Test"
    android:textSize="40sp"/>

dialog버튼을 선언해서 클릭 시 모달 창(팝업창)이 나오는 기능을 준비한다.

TextView를 선언해서 출력할 텍스트를 만들어 준다.

 

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private Button btn_dialog;
    private TextView tv_result;

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

        btn_dialog = (Button) findViewById(R.id.btn_dialog);
        tv_result = (TextView) findViewById(R.id.tv_result);

        btn_dialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder ad = new AlertDialog.Builder(MainActivity.this);
                ad.setIcon(R.mipmap.ic_launcher);
                ad.setTitle("SeoTitle");
                ad.setMessage("메시지를 입력해주세요.");

                final EditText et = new EditText(MainActivity.this);
                ad.setView(et);
                ad.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String result = et.getText().toString();
                        tv_result.setText(result);
                        dialogInterface.dismiss();

                    }
                });

                ad.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                });
                ad.show();
            }
        });
    }
}

activity_main.xml 에서 선언한 btn_dialog, tv_result를 연결시켜준다. (findViewById(R.id.xxx))

그리고 onClick() 메서드를 작성해주는데 ,, 

 

 

 

AlertDialog.Builder ad = new AlertDialog.Builder(MainActivity.this);
                ad.setIcon(R.mipmap.ic_launcher);
                ad.setTitle("SeoTitle");
                ad.setMessage("메시지를 입력해주세요.");

                final EditText et = new EditText(MainActivity.this);
                ad.setView(et);

 

AlertDialog는 Builder를 이용해서 제목, 최대 3개의 버튼, 선택 가능한 항목 목록을 만드는 것이 가능하다.

SetIcon을 이용해서 Title옆에 붙이고, setMessage를 사용해서 메시지를 입력해주었다. 

 

그리고 입력을 받기 위해서 EditText를 선언한다.  AlertDialog 인 ad에 setView을 사용해서 출력을 해주었다. 

 

 

ad.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        String result = et.getText().toString();
        tv_result.setText(result);
        dialogInterface.dismiss();

    }
});

ad.setNegativeButton("No", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialogInterface.dismiss();
    }
});
ad.show();

 

두 개의 버튼을 선언하였다. PositiveButton(긍정)과 NegariveButton(부정) OnClick경우 

tv_result로 선언한 곳에 입력된 값을 출력해주는 형식이다. 

Positive버튼을 선택시 

et.getText().toString(); 은 Dialog에서 입력된 텍스트를 가져와서 String형태로 result에 저장하고 

tv_result.setText(result);   는 result에 저장된 String 값을 textView(tv_result)에 출력해준다. 

 

 

그리고 마지막으로 주의해야 할 점은 ad.show(); 를 꼭 해줘야 한다는 점이다.

 

 

 

 

반응형

댓글