android studio : kotlin TimePickerDialogとDatePickerDialogの使いかたメモ書き

fun showDatePickerDialog(button:Button,calendar:Calendar){
val dateSetListener = DatePickerDialog.OnDateSetListener{datePicker,year,month,dayOfMonth->
calendar.set(Calendar.YEAR,year)
calendar.set(Calendar.MONTH,month)
calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth)
button.text = String.format("%d/%02d/%02d", year, month+1,dayOfMonth)
}
DatePickerDialog(this,dateSetListener,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show()
}
fun showTimePickerDialog(button:Button,calendar:Calendar){
val timeSetListener = TimePickerDialog.OnTimeSetListener{timePicker,hour,minute->
calendar.set(Calendar.HOUR_OF_DAY,hour)
calendar.set(Calendar.MINUTE,minute)
button.text = String.format("%02d:%02d", hour, minute)
}
TimePickerDialog(this,timeSetListener,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show()
}

これをButton押したときやEditText押したとき (setOnClickListener) に呼び出す。
そうするとなんかいい感じにでてくる。
今回は引数にButtonを使っているがテキストだったらなんでもいい。
Calendarは関数内で宣言してもいい。
String.formatは好み。
OnDateSetListener、OnTimeSetListener内でちゃんとテキストを変更しないとおかしな挙動になってしまうので注意。
例えば

TimePickerDialog(this,timeSetListener,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show()

の後に

button.text = String.format("%02d:%02d", hour, minute)

しても意味なし

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA