lateinit property binding has not been initialized
Opened this issue · 0 comments
skiyoumi commented
XPopup版本
2.9.18
描述你的问题
使用viewBinding在onCreate()中进行绑定,但是onCreate()是在show()过后调用的,现在需要在掉show()之前设置一些属性,导致在设置属性时binding属性为初始化。
class RemarkDialog(context: Context, private val maxWordCount: Int = 0) :
BottomPopupView(context) {
lateinit var binding: WindowPopupRemarkBinding
var sureListener: (remark: String) -> Unit = {}
override fun onCreate() {
binding = WindowPopupRemarkBinding.bind(popupImplView)
initView()
}
fun show(title: String = "备注", initRemark: String? = null) {
binding.tvTotal.text = title
if (!initRemark.isNullOrEmpty()) {
binding.etRemark.setText(initRemark)
binding.etRemark.setSelection(initRemark.orEmpty().length)
}
show()
}
private fun initView() {
binding.tvMaxQty.isVisible = maxWordCount != 0
if (maxWordCount != 0) {
binding.etRemark.filters = arrayOf(object : InputFilter.LengthFilter(maxWordCount) {
})
binding.etRemark.addTextChangedListener(object : TextWatcherAdapter() {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
binding.tvMaxQty.text = "${s.length}/${maxWordCount}"
}
})
}
binding.ivClose.setOnClickListener(ThrottleOnClickListener {
dismiss()
})
binding.tvSubmit.setOnClickListener(ThrottleOnClickListener {
sureListener(binding.etRemark.text.toString())
dismiss()
})
}
}