Mam niestandardowy widok napisany w Kotlin za pomocą JvmOverloads, że mogę mieć wartość domyślną.Konstruktor widoku niestandardowego w Androidzie 4.4 rozbija się na Kotlin, jak go naprawić?
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes)
Wszystkie działa dobrze na Androidzie 5.1 i nowszych.
Jednak ulega awarii w 4.4, ponieważ konstruktor w 4.4 nie ma defStyleRes
. Jak mogłem mieć to obsługiwane, że w 5.1 i wyżej mogłem mieć defStyleRes
, ale nie w 4.4, bez potrzeby jawnego posiadania 4 konstruktorów zdefiniowanych jak my w Javie?
Uwaga: Poniższy kod działa poprawnie w wersji 4.4, ale wtedy tracimy wartość defStyleRes
.
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle)
To powrót do starego sposobu posiadające wszystkie 4 konstruktorzy zdefiniowane :( – Elye
No to droga Android działa, bez względu na to jak składnia znacznie Kotlin pomaga, to Android ten, który wymaga boilerplate: D Tak czy inaczej, można przycinać te przy użyciu domyślnych wartości, ale musisz użyć co najmniej 2 konstruktorów – Seaskyways
@ Elye Edytowałem swoją odpowiedź, aby pokazać tę samą funkcjonalność z 2 konstruktorami. – Seaskyways