下面的代码片段“正常”,正确地更新了statusDateID。我遇到的问题是,虽然它正确设置了statusDateID,但日期不会持久,当我更新mh.entryDate时,它始终是当前日期。
如何在对话框之外获取日期。这样我就可以用所选日期更新mh.entryDate,而不是当前日期。
感谢您的时间。
fun changeDate(view: View) {
var date: Calendar = Calendar.getInstance()
var thisAYear = date.get(Calendar.YEAR).toInt()
var thisAMonth = date.get(Calendar.MONTH).toInt()
var thisADay = date.get(Calendar.DAY_OF_MONTH).toInt()
val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { view2, thisYear, thisMonth, thisDay ->
// Display Selected date in textbox
thisAMonth = thisMonth + 1
thisADay = thisDay
thisAYear = thisYear
statusDateID.setText("Date: " + thisAMonth + "/" + thisDay + "/" + thisYear)
val newDate:Calendar =Calendar.getInstance()
newDate.set(thisYear, thisMonth, thisDay)
}, thisAYear, thisAMonth, thisADay)
dpd.show()
mh.entryDate = date.timeInMillis
println("DATE DATA: "+thisAYear+ " "+thisAMonth+" " + thisADay)
println("DATE CHANGED MILLISECS = "+mh.entryDate)
}
mh.entryDate被定义为全局,并且是LONG。使用调试println语句,DATE DATA和DATE CHANGED MILLISECS都显示当前日期。
答案 0 :(得分:3)
只需在DatePickerDialog.OnDateSetListener
方法中设置日期即可
mh.entryDate = newDate.timeInMillis
val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { view2, thisYear, thisMonth, thisDay ->
// Display Selected date in textbox
thisAMonth = thisMonth + 1
thisADay = thisDay
thisAYear = thisYear
statusDateID.setText("Date: " + thisAMonth + "/" + thisDay + "/" + thisYear)
val newDate:Calendar =Calendar.getInstance()
newDate.set(thisYear, thisMonth, thisDay)
mh.entryDate = newDate.timeInMillis // setting new date
}, thisAYear, thisAMonth, thisADay)
dpd.show()
答案 1 :(得分:1)
您正在将date
对象作为日历中的新实例进行实例化,但您不会使用选择器中的日期更新它。 date
已创建,查询,但从未更新。