下面是我用來在 android 中顯示日期選擇器對話框的函式。
private fun openPurchaseDatePickerDialog(
yearToDisplay: Int,
monthToDisplay: Int,
dayToDisplay: Int
) {
try {
activity?.let { KeyboardUtils.hideKeyboard(it) }
val calendar = Calendar.getInstance()
val dialog = DatePickerDialog(activity, { _, year, month, day_of_month ->
calendar[Calendar.YEAR] = year
calendar[Calendar.MONTH] = month
calendar[Calendar.DAY_OF_MONTH] = day_of_month
val myFormat = "" DateUtils.OverAllAppDateDisplayFormat
val sdf = SimpleDateFormat(myFormat, Locale.getDefault())
edtPurchaseDate.setText(sdf.format(calendar.time).toString())
spIntendedUse.isFocusable = true
}, yearToDisplay, monthToDisplay, dayToDisplay)
dialog.updateDate(yearToDisplay,monthToDisplay,dayToDisplay)
dialog.datePicker.maxDate = calendar.timeInMillis
dialog.show()
} catch (e: Exception) {
e.printStackTrace()
}
如上所述,您可以檢查此函式中是否傳遞了三個引數。
我必須在 DatePicker 對話框中顯示特定日期,顯示我已經傳遞了這三個引數。
表示如果用戶第一次選擇日期,則將設定默認值或設定當前日期。
如果 edittext 已經選擇了一個文本并且不為空,我將執行以下操作:
if (edtPurchaseDate.text.toString().isNullOrEmpty()) {
val calendar = Calendar.getInstance()
openPurchaseDatePickerDialog(
calendar[Calendar.YEAR],
calendar[Calendar.MONTH],
calendar[Calendar.DAY_OF_MONTH]
)
} else {
var dateArr = edtPurchaseDate.text.toString().split("-")
openPurchaseDatePickerDialog(
dateArr[2].toInt(),
dateArr[1].toInt(),
dateArr[0].toInt()
)
}
但是仍然當日期選擇器對話框打開時,將所選內容顯示為今天而不是自定義。
可能是什么問題?
你可以看到我也嘗試過updateDate()如下功能:
dialog.updateDate(yearToDisplay,monthToDisplay,dayToDisplay)
謝謝。
uj5u.com熱心網友回復:
不完全確定updateDate這里的方法問題。但是要解決這個問題,您可以Calendar在初始化期間使用相同的物件,它應該可以正常作業。我稍微修改了你的方法。
private fun openPurchaseDatePickerDialog(date: String) {
try {
val calendar = Calendar.getInstance()
if (date.isNotBlank()) {
try {
calendar.time = SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).parse(date)!!
}catch (e:ParseException){
}
}
val dialog = DatePickerDialog(this, { _, year, month, day_of_month ->
calendar[Calendar.YEAR] = year
calendar[Calendar.MONTH] = month
calendar[Calendar.DAY_OF_MONTH] = day_of_month
val myFormat = "dd-MM-yyyy"
val sdf = SimpleDateFormat(myFormat, Locale.getDefault())
edtPurchaseDate.setText(sdf.format(calendar.time).toString())
}, calendar[Calendar.YEAR], calendar[Calendar.MONTH], calendar[Calendar.DAY_OF_MONTH])
dialog.datePicker.maxDate = System.currentTimeMillis()
dialog.show()
} catch (e: Exception) {
e.printStackTrace()
}
}
現在,當您呼叫它時,您只需使用一個不必拆分字串的值即可呼叫它。
openPurchaseDatePickerDialog(edtPurchaseDate.text.toString())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368184.html
標籤:安卓 日期 科特林 android-datepicker 日期选择器对话框
上一篇:在R中格式化日期格式不一致的向量
下一篇:如何在日期上使用剪切功能
