如何解决AlertDialog 关闭回调
我正在用 Kotlin 开发一个 Android 应用。在 Utils 类中我有这个方法:
fun showAutoHideMessage(context: Context,title: String,message: String,positiveButtonTitle: String?,negativeButtonTitle: String?,neutralButtonTitle: String?,delay: Long,okListener: DialogInterface.OnClickListener){
val builder = AlertDialog.Builder(context)
with(builder)
{
setTitle(title)
setMessage(message)
positiveButtonTitle?.let {
setPositiveButton(positiveButtonTitle,okListener)
}
negativeButtonTitle?.let {
setNegativeButton(negativeButtonTitle,okListener)
}
neutralButtonTitle?.let {
setNeutralButton(neutralButtonTitle,okListener)
}
val alert = create()
alert.show()
val handler = Handler()
val runnable = Runnable {
if (alert.isShowing()) {
alert.dismiss()
}
}
alert.setOnDismissListener(DialogInterface.OnDismissListener { handler.removeCallbacks(runnable) })
handler.postDelayed(runnable,delay)
}
}
这个想法是显示一个警报对话框并在一段时间后关闭它,直到今天我都想在关闭时间后做一些事情。所以我让用户触摸肯定的按钮并且 onClickListener 被很好地触发(稍后我调用远程网络服务)。用户可以取消,所以 onClickListener 被触发,我什么都不做。但延迟后,AlertDialog 被解除,我也想调用远程网络服务。
我做了第一种方法,将 DialogInterface.OnDismissListener 传递给这个函数,似乎可行,但我无法执行 handler.removeCallbacks(runnable),我不确定是否有更好的方法。
这就是我现在调用函数的方式:
showAutoHideMessage(this,"Title","Message","Confirm","Cancel",null,5000,DialogInterface.OnClickListener { dialog,which ->
when (which) {
DialogInterface.BUTTON_POSITIVE -> {
doSomething()
}
DialogInterface.BUTTON_NEGATIVE -> {
}
DialogInterface.BUTTON_NEUTRAL ->{
}
}
}/*,DialogInterface.OnDismissListener {
doSomething()
}*/
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。