Edittext仅显示当前日期,同时选择其他日期

时间:2019-11-09 14:45:43

标签: android kotlin android-edittext android-datepicker

我试图在单击editext后打开一个日期选择器,这已经实现了,但是我遇到了一个问题,每次我选择一个日期settext()都只获得当前日期。不是以前的日期。

我已经实现了开张日期选择器。 也是我要求的格式。 成功通过了18岁以上的检查

etDob.setOnClickListener {
    val calendar = Calendar.getInstance()
    val year = calendar.get(Calendar.YEAR)
    val month = calendar.get(Calendar.MONTH)
    val day = calendar.get(Calendar.DAY_OF_MONTH)


    val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
        val myFormat: String = "MM/dd/yyyy"

        val sdf = SimpleDateFormat(myFormat, Locale.US)
        val dob = sdf.format(calendar.getTime())
        etDob!!.setText(dob)

        val userAge = GregorianCalendar(year, month, day)

        val minAdultAge = GregorianCalendar()
        minAdultAge.add(Calendar.YEAR, -18)
        if (minAdultAge.before(userAge)) {
            Toast.makeText(this, "18 year", Toast.LENGTH_SHORT).show()
        }
    }, year, month, day)
    dpd.datePicker.maxDate = Calendar.getInstance().timeInMillis
    dpd.show()

etDob是我的edittext,我在其中设置并设置用户年龄 但是每次我选择一个值时,我都会得到当前日期。

1 个答案:

答案 0 :(得分:0)

您必须将日历设置为日期设置

calendar.set(Calendar.YEAR, year)
calendar.set(Calendar.MONTH, monthOfYear)
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)

因此您的代码应类似于-

val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->

calendar.set(Calendar.YEAR, year)
calendar.set(Calendar.MONTH, monthOfYear)
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
val myFormat: String = "MM/dd/yyyy"

val sdf = SimpleDateFormat(myFormat, Locale.US)
val dob = sdf.format(calendar.getTime())
}