【发布时间】:2017-07-28 05:41:06
【问题描述】:
我有一个使用 JvmOverloads 用 Kotlin 编写的自定义视图,我可以有默认值。
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes)
在 Android 5.1 及更高版本中一切正常。
但是它在 4.4 中崩溃,因为 4.4 中的构造函数没有defStyleRes。我怎么能在 5.1 及更高版本中支持 defStyleRes 但在 4.4 中不支持,而无需像在 Java 中那样显式定义 4 个构造函数?
注意:以下内容在 4.4 中可以正常工作,但随后我们失去了 defStyleRes。
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle)
【问题讨论】:
-
您可以在这篇文章中阅读更多关于
@JvmOverloads副作用的信息:medium.com/@mmlodawski/…
标签: android kotlin android-custom-view android-4.4-kitkat