본문 바로가기
모바일/Kotlin

대화 상자

by 다오__ 2025. 3. 4.

AlertDialog

- 안드로이드 플랫폼이 사용자에게 특정 메시지를 출력하고 사용자의 의사를 전달받을 수 있는 인터페이스를 제공하는 위젯

- Toast와 비슷하지만 사용자와의 상호작용 이라는 점에 차이가 있음

 

AlertDialog 생성자

- 생성자는 protected로 숨겨져 있고, Builder로 생성해야한다. 

- AlertDialog.Builder(Context context)

- setMessage, setTitle, setIcon, setPositiveButton 등

 

Builder

- AlertDialog show() 메서드를 통해 AlertDialog를 보이게 하거나 create() 메서드를 통해 생성할 수 있음

- Builder 객체의 create메서드는 AlertDialog를 생성만하고 화면으로 출력하지 않음, 메모리에만 존재하게 된다., show 메서드를 통해 화면에 출력

 

//MainActivity.java
...
public void mOnClick(View v){
    AlertDialog.Builder bld = new AlertDialog.Builder(this);
            bld.setTitle("");
            bld.setMessage("");
            bld.setIcon(R.mipmap.ic_launcher);
            bld.show();
	}
    ...

 

빌더패턴은 자기 자신을 반환한다. > 함수형 프로그래밍

메서드들을 연쇄적으로 호출할 수 있음.

 

AlertDialog 내 버튼

- 버튼의 인수로는 버튼에 표시할 "텍스트" 와 "클릭 리스너" 가 있음

- 텍스트는 버튼 간 구분을 위한 것이고 역할은 리스너에 구현된 코드로 결정된다.

 

 

DatePickerDialog

- 사용자가 날짜정보를 입력할 수 있는 인터페이스

//생성자 매개변수

public DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener listener,
						int year, int monthOfYear, int dayOfMonth)

- 리스너는 대화장사의 OK 버튼 클릭 시 연결되는 이벤트 리스너를 지정

- 그 이후 매개변수 year ~ 는 기본값으로 설정되는 연, 월, 일의 속성값을 의미

 

//MainActivity.java
...
public void onClick(View v) {
	...
	Calendar c = Calendar.getInstance();		//싱글톤
   	int mYear = c.get(Calendar.YEAR);
    ...
    datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener(){
    	@Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth){   //1. 정의를 먼저
        	...
        }
    }, mYear, mMonth, mDay
    );
    datePickerDialog.show();    //2. 출력
}

- 호출되는 메서드의 값들은 Dialog창에서 사용자가 달력 값을 클릭 시, 들어온다.

 

TimePickerDialog

- 사용자가 시간 정보를 입력할 수 있는 인터페이스, 오전? 오후? 24시간 모드, 알람 등

- TimePicker의 레이아웃 유형은 timePickerMode 속성을 통해 지정

- 이 속성값으로 시계모양의 clock스피너 모양의 spinner가 있음

 

// MainActivity.java

...
@Override
protected void onCreate(Bundle savedInstanceSate){
	...
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {		//스마트폰 안드로이드 버전이 더 높은 경우에만
    //timepicker 설정
    //timePicker.setHour(int);
    //timePicker.setMinute(int);
    
    }
}

button.setOnClickListener(new View.OnClickListener(){
	@Override
    public void onClick(View v) {
    	if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        //텍스트뷰에 타임픽커에서 선택된 값을 세팅 
        
        }
    }


}

 

'모바일 > Kotlin' 카테고리의 다른 글

어댑터 뷰  (0) 2025.03.04
이벤트 처리  (0) 2025.02.28
도형 및 소리 출력  (0) 2025.02.27
레이아웃  (0) 2025.02.27
사용자 인터페이스를 위한 위젯  (0) 2025.02.26