android项目中的自定义日历对话框

问题描述 投票:0回答:1

在我的项目中,我为对话框添加自定义布局以向用户显示时间选择器。

它工作正常,但有时当对话框打开时它会闪烁,当我设置时间并单击取消或确定时,它首先重置时间,然后在第二次单击时关闭对话框。

下面是我从片段中调用的函数。

有趣的 selectTime(上下文:上下文){

val currentTime = Calendar.getInstance()
val hour = currentTime.get(Calendar.HOUR_OF_DAY)
val minute = currentTime.get(Calendar.MINUTE)

val dialog = Dialog(context)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog.setCancelable(false)
dialog.setContentView(R.layout.custom_time_picker)
Log.e("time-->","first")
val timePicker=dialog.findViewById<TimePicker>(R.id.timePicker)
val ok = dialog.findViewById<TextView>(R.id.ok)
val cancel = dialog.findViewById<TextView>(R.id.cancel)
Log.e("time-->","second")
timePicker.setIs24HourView(true)
timePicker.hour = hour
timePicker.minute = minute

Log.e("time-->","third")
cancel.setOnClickListener {

  //  dialog.cancel()
    dialog.dismiss()
}

ok.setOnClickListener {
    val selectedHour = timePicker.hour
    val selectedMinute = timePicker.minute
    // Do something with the selected time
    Log.e("time-->","$selectedHour:$selectedMinute")
    dialog.dismiss()
}

dialog.show()
dialog.window?.setBackgroundDrawableResource(R.color.transparent)
val window = dialog.window
window?.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)

我想关闭 d=首先单击“取消”或“确定”上的对话框 而且日志在点击时打印两次,不知道为什么

android dialog datetimepicker timepicker android-timepicker
1个回答
0
投票

我自己得到了答案它通过添加以下代码行来工作

var 对话框实例:对话框? = 空 有趣的 selectTime(context: Context, onTimeSelected: (String) -> Unit) { val 对话框: 对话框 if (dialogInstance != null &&dialogInstance!!.isShowing) { 返回 } 别的 { 对话框 = 对话框(上下文) 对话框实例 = 对话框 }

// 其余代码在这里

© www.soinside.com 2019 - 2024. All rights reserved.