Android Programming

[Mobile Programming] 대화상자

gangintheremark 2021. 10. 19. 04:10
728x90

대화상자 (Dialog)

  • 사용자에게 메시지를 출력하고 사용자로부터 입력을 받아들이는 보편적인 사용자 인터페이스
  • 사용자에게 중요한 사항을 알려준 후, 어떤 선택을 하게 하는 것이 목적
  1. 대화상자 생성 : AlertDialog.BUilder 클래스로 생성
  2. 용도에 따른 생성
    • setTitle() : 제목 설정
    • setMessage() : 내용 입력
    • setPostiveButton() : OK 버튼
    • setNegativeButton() : Cancel 버튼
    • setSingleChoiceItems() : 라디오버튼 목록 출력
    • setMultiChoiceItems() : 체크박스 목록 출력
  3. 대화상자 화면 출력
    • show()

실습

  • 대화상자 Java 코드 (버튼없음)
    @Override
       protected void onCreate(Bundle savedInstanceState) {
       ...
        // 버튼 생성
        Button btn = (Button)findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                //AlertDialog.Builder 사용 
                AlertDialog.Builder mydlg = new AlertDialog.Builder(MainActivity.this);
                mydlg.setTitle("제목입니다.");
                mydlg.setMessage("이 곳이 내용입니다."); 
            }
        });
  • 대화상자 Java 코드
 // 변수선언
 final String[] hobby = new String[] {"낚시", "등산", "수영"};
 TextView tv;

    @Override
       protected void onCreate(Bundle savedInstanceState) {
       ...
        // 위젯 연결
        tv = (TextView) findViewById(R.id.textView2);
        Button btn = (Button)findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                AlertDialog.Builder mydlg = new AlertDialog.Builder(MainActivity.this);
                mydlg.setTitle("제목입니다.");
                mydlg.setItems(hobby, new DialogInterface.OnClickListener() {
                     @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        tv.setText(" 당신이 좋아하는 취미는 : " + hobby[i]);
                    }
                 }):
                 //postive 버튼
                mydlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override // OK를 눌렀을 때 작동할 콜백함수
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(getApplicationContext(), "OK 버튼 클릭됨", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });

  • 라디오 버튼 , 체크박스
// 라디오 버튼 : 여러 개 중 하나 클릭했을 때 선택된 것만 클릭되고 나머지는 해제 
    mydlg.setSingleChoiceltems(hobby, 0, new DialogInterface.OnClickListener() {
       @Override
        public void onClick(DialogInterface dialogInterface, int i) {
         tv.setText(" 당신이 좋아하는 취미는 : " + hobby[i]);
         }
 });

 // 체크 박스 : 여러 개 선택 가능
  mydlg.setMultiChoiceItems(hobby, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
       @Override
        public void onClick(DialogInterface dialogInterface, int i, boolean ischecked) {
            ...
        }
  });
728x90