Android-Kotlin - TimePickerDialog 在以编程方式设置时显示不正确的时间
Android-Kotlin - TimePickerDialog shows incorrect time when set programatically
我正在我的代码中设置默认时间,并希望将时间选择器对话框设置为用户单击它时的时间。下面是代码:
startTimeButton?.setOnClickListener {
val calendar = Calendar.getInstance()
val timeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
calendar.set(Calendar.MINUTE, minute)
startTimeButton?.text = SimpleDateFormat("HH:mm").format(calendar.time)
SharedPreferences.setStartTime(activity, startTimeButton?.text.toString())
}
val startTimeArray: List<String> = SharedPreferences.getStartTime(context).split(":")
TimePickerDialog(activity, timeSetListener, calendar.get(startTimeArray[0].toInt()), calendar.get(startTimeArray[1].toInt()), true).show()
}
如果我的开始时间是 09:00,时间选择器对话框指向 01:01,如果是 17:00,那么时间选择器对话框会崩溃并出现 "java.lang.ArrayIndexOutOfBoundsException: length=17; index=17" 错误。
我做错了什么?
The get()
function on Calendar
returns 给定字段标识符的值。示例包括 calendar.get(Calendar.HOUR_OF_DAY)
和 calendar.get(Calendar.MINUTE)
.
您似乎将 get()
小时和分钟作为整数传递。这些不是字段标识符。
我怀疑这更接近你想要的:
TimePickerDialog(activity, timeSetListener, startTimeArray[0].toInt(), startTimeArray[1].toInt(), true).show()
此外,请确保您正在处理配置更改。例如,使用 DialogFragment
来显示您的 TimePickerDialog
.
我正在我的代码中设置默认时间,并希望将时间选择器对话框设置为用户单击它时的时间。下面是代码:
startTimeButton?.setOnClickListener {
val calendar = Calendar.getInstance()
val timeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay)
calendar.set(Calendar.MINUTE, minute)
startTimeButton?.text = SimpleDateFormat("HH:mm").format(calendar.time)
SharedPreferences.setStartTime(activity, startTimeButton?.text.toString())
}
val startTimeArray: List<String> = SharedPreferences.getStartTime(context).split(":")
TimePickerDialog(activity, timeSetListener, calendar.get(startTimeArray[0].toInt()), calendar.get(startTimeArray[1].toInt()), true).show()
}
如果我的开始时间是 09:00,时间选择器对话框指向 01:01,如果是 17:00,那么时间选择器对话框会崩溃并出现 "java.lang.ArrayIndexOutOfBoundsException: length=17; index=17" 错误。
我做错了什么?
The get()
function on Calendar
returns 给定字段标识符的值。示例包括 calendar.get(Calendar.HOUR_OF_DAY)
和 calendar.get(Calendar.MINUTE)
.
您似乎将 get()
小时和分钟作为整数传递。这些不是字段标识符。
我怀疑这更接近你想要的:
TimePickerDialog(activity, timeSetListener, startTimeArray[0].toInt(), startTimeArray[1].toInt(), true).show()
此外,请确保您正在处理配置更改。例如,使用 DialogFragment
来显示您的 TimePickerDialog
.