본문 바로가기
Android/Kotlin App

[Kotlin App] DatePickerDialog / TimePickerDialog

by 태옹 2021. 5. 4.

첫 번째 이미지는 DatePickerDialog, 두 번째 이미지는 TimePickerDialog를 사용한 화면이다.

 

 

 

 

xml파일 : 각 위젯의 id확인하기

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity2">

    <TextView
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="설정 날짜와 시간"
        android:layout_gravity="center"
        android:textSize="18dp"/>

    <Button
        android:id="@+id/date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="날짜 설정" />

    <Button
        android:id="@+id/time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="시간 설정" />
</LinearLayout>

 

 

MainActivity.kt

package com.cookandroid.kotlinapp0503_2

import android.app.DatePickerDialog
import android.app.TimePickerDialog
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.DatePicker
import androidx.annotation.RequiresApi
import kotlinx.android.synthetic.main.activity_main2.*
import java.util.*

class MainActivity2 : AppCompatActivity() {
    var dateString = ""
    var timeString = ""
    @RequiresApi(Build.VERSION_CODES.N)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        date.setOnClickListener {
            val cal = Calendar.getInstance()    //캘린더뷰 만들기
            val dateSetListener = DatePickerDialog.OnDateSetListener { view, year, month, dayOfMonth ->
                dateString = "${year}년 ${month+1}월 ${dayOfMonth}일"
                result.text = "날짜/시간 : "+dateString + " / " + timeString
            }
            DatePickerDialog(this, dateSetListener, cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH)).show()
        }
        
        time.setOnClickListener { 
            val cal = Calendar.getInstance()
            val timeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
                timeString = "${hourOfDay}시 ${minute}분"
                result.text = "날짜/시간 : "+dateString + " / " + timeString
            }
            TimePickerDialog(this, timeSetListener, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE),true).show()
        }
    }
}

 

# 공통

1. Calendar.getInstance() : 캘린더 객체 만들기 (date와 time에 각각 만들어줌)

 

# Date부분

2. DatePickerDialog.OnDateSetListener{}함수 작성 : 내부에 실행할 기능들을 작성

3. DatePickerDialog(this, dateSetListener, cal.get~).show() : dialog창 띄우기

 

# Time부분

4. TimePickerDialog.OnTimeSetListener{}함수 작성 : 내부에 실행할 기능들을 작성

5. TimePickerDialog(this, timeSetListener, cal.get~,true).show() : dialog창 띄우기

6. 매개변수 부분에 true를 지정하게 되면 24시간제로 설정되고 false를 하면 12시간제로 설정됨

 

 

'Android > Kotlin App' 카테고리의 다른 글

[Kotlin App] 서비스와 브로드캐스트 리시버  (0) 2021.06.07
[Kotlin App] 파일 처리  (1) 2021.05.11
[Kotlin App] Action Bar와 Flagment  (0) 2021.05.04
[Kotlin App] TabHost  (0) 2021.05.03
[Kotlin App] 목록 대화상자  (0) 2021.04.19

댓글