Я так растерялся, почему никто не использует блок инициализации в пользовательском представлении Android для инициализации и раздувания представления. Давайте рассмотрим пример того, как я это делаю:
class MyCompoundView : ConstraintLayout {
constructor(p0: Context) : super(p0)
constructor(p0: Context, p1: AttributeSet?) : super(p0, p1)
constructor(p0: Context, p1: AttributeSet?, p2: Int) : super(p0, p1, p2)
init {
inflate(context, R.layout.my_view_container, this)
//etc
}
}
что-то не так с этим, в отличие от того, что я вижу по всему интернету:
class MyCompoundView : ConstraintLayout {
constructor(p0: Context) : super(p0){initialize()}
constructor(p0: Context, p1: AttributeSet?) : super(p0, p1){initialize()}
constructor(p0: Context, p1: AttributeSet?, p2: Int) : super(p0, p1, p2){initialize()}
private fun initialize() {
inflate(context, R.layout.ride_hail_otp_container, this)
}
}
пс. я не одобряю jvmOverload в customViews, поэтому нет необходимости упоминать это. просто хочу знать о блоке инициализации против вызова его в каждом конструкторе. Я не вижу, чтобы кто-то делал это онлайн, и мне интересно, почему?