iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0

Android Dialog

我們今天嘗試來實作可以選擇日期跟時間的 Dialog 。

實作過程

Android 的 Dialog 是透過實作 Dialog Fragment,這樣你就可以獲得一個基本的對話 Dialog 。

但官網建議盡量避免直接使用 Dialog 可以使用 AlertDialog 來取代。

那讓我們來看看如何實作一個讓使用者選擇日期的 DateDialog 吧

class DatePickerFragment: DialogFragment(), DatePickerDialog.OnDateSetListener {

    private var partyDate: String = ""

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

        val c = Calendar.getInstance()
        val years = c.get(Calendar.YEAR)
        val months = c.get(Calendar.MONTH)
        val days = c.get(Calendar.DAY_OF_MONTH)

        return DatePickerDialog(activity, this, years, months, days)

    }

    override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {

        partyDate = "$year - $month - $dayOfMonth"
        val tv: TextView = activity?.findViewById(R.id.pickDateTextView) as TextView
        tv.text = "$year - $month - $dayOfMonth"

    }

    fun getDate(): String {
        return partyDate
    }

我們透過實作 Dialog Fragment 後,它會需要 override onCreateDialog 這裡我們就可以決定我們需要用到什麼類型的 Dialog。

我們這裡希望我們可以建立一個 DateDialog 所以,我們建立好 DateDialog 後將它回傳。

同時我們也可以注意到,我們同時實做了 DatePickDialog.OnDateSetListener 這樣我們就可以取得使用者所選取的資料。

最後我們建立了一個 getDate 的 function 來讓其他需要這筆資料的地方可以使用。

關於時間的 Dialog 也是一樣的作法,我們就看看如何實作,但不多做解釋囉。

class TimePickerFragment : DialogFragment(), TimePickerDialog.OnTimeSetListener {

    private var partyTime = ""

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

        val c = Calendar.getInstance()
        val hours = c.get(Calendar.HOUR_OF_DAY)
        val minutes = c.get(Calendar.MINUTE)

        return TimePickerDialog(activity, this, hours, minutes, true)

    }

    override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {

        partyTime = "$hourOfDay : $minute"
        val tv = activity?.findViewById(R.id.pickTimeTextView) as TextView
        tv.text = "$hourOfDay : $minute"

    }

    fun getTime():String {
        return partyTime
    }


}

今天就先這樣囉,我們明天見~~

參考資料

對話方塊
DatePickerDailog
TimePickerDailog


上一篇
Day19_DrawerActivity_2
下一篇
Day21_BallAnimator
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言