android布局DSL,android – 使用自定义Anko布局DSL解除警报对话框

我创建了以下警告对话框,其中包含一个包含TextView,EditText和Button的简单视图:

alert {

customView {

verticalLayout {

textView {

text = getString(R.string.enter_quantity)

textSize = 18f

textColor = Color.BLACK

}.lparams {

topMargin = dip(17)

horizontalMargin = dip(17)

bottomMargin = dip(10)

}

val quantity = editText {

inputType = InputType.TYPE_CLASS_NUMBER

background = ContextCompat.getDrawable(this@ProductsList, R.drawable.textbox_bg)

}.lparams(width = matchParent, height = wrapContent) {

bottomMargin = dip(10)

horizontalMargin = dip(17)

}

button(getString(R.string.confirm)) {

background = ContextCompat.getDrawable(this@ProductsList, R.color.colorPrimary)

textColor = Color.WHITE

}.lparams(width = matchParent, height = matchParent) {

topMargin = dip(10)

}.setOnClickListener {

if (quantity.text.isNullOrBlank())

snackbar(parentLayout!!, getString(R.string.enter_valid_quantity))

else

addToCart(product, quantity.text.toString().toInt())

}

}

}

}.show()

我想在单击按钮并执行if-else子句时忽略它.我尝试使用这个@ alert但它没有提供对话框方法.

解决方法:

这是有问题的,因为当对话框尚不存在时,您的按钮函数调用会注册侦听器.

这是一种方法,使用本地lateinit变量使对话框在侦听器中可用:

lateinit var dialog: DialogInterface

dialog = alert {

customView {

button("Click") {

dialog.dismiss()

}

}

}.show()

您还可以将构建器的结果分配给类属性等.请注意,局部变量的lateinit可用于since Kotlin 1.2.

标签:anko,android,kotlin

来源: https://codeday.me/bug/20190727/1550077.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值