Android: абстрактное пользовательское представление и стандартная инфляция макета.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android: абстрактное пользовательское представление и стандартная инфляция макета.

Сообщение Anonymous »

Итак, я провел небольшое исследование и обнаружил, что представление инфляции внутри init/конструктора абстрактного базового класса на самом деле не является лучшей практикой. Я понимаю, что это происходит потому, что инициализатор базового класса происходит до инициализации/конструктора производного класса. Поскольку абстрактный класс не является окончательным, в блоке инициализации есть хорошее сообщение IDE об этом.

Вот что я хотя потом:

Код: Выделить всё

abstract class Foo @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {

private val myView: View

init {
// todo@patches fix leaking "this"
View.inflate(context, R.layout.view_foo, this)
myView = requireNotNull(findViewById(R.id.my_view))
}
}

Код: Выделить всё

class Bar @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : Foo(context, attrs, defStyleAttr)
Мне действительно не хочется добавлять что-либо в инициализацию производного класса или делать myView переменной, допускающей значение null/изменяемой, которая будет установлена ​​позже в абстрактный класс.

Кого-нибудь это немного расстраивает или у кого-нибудь есть совет? Кажется, нередко возникает желание создать один и тот же макет из базового класса.

Подробнее здесь: https://stackoverflow.com/questions/605 ... -inflation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»