我有一个使用JvmOverloads在Kotlin编写的自定义视图,我可以使用默认值。Android 4.4中的自定义视图构造函数在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,而不需要显式地有4个构造函数定义像我们在Java中所做的那样?
注意:下面的4.4会正常工作,但是我们放弃了defStyleRes
。
class MyView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle)
这回有定义的所有4个构造:( – Elye
那么它就是这样的Android作品,不管多少科特林的语法如何帮助,这是Android的需要样板之一的老办法:d不管怎么说,你可以修剪这些使用默认值,但你必须使用至少2个构造函数 – Seaskyways
@Elye我已编辑我的答案,以显示与2构造函数相同的功能 – Seaskyways