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 |