junixapp/XPopup

lateinit property binding has not been initialized

Opened this issue · 0 comments

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()
    })
}

}