在将Kotlin版本更新为1.3.0之后,我遇到了上述问题
下面是代码,
public class SequenceLayout(context: Context?, attrs: AttributeSet?, defStyleAttr: Int)
: FrameLayout(context, attrs, defStyleAttr), ViewTreeObserver.OnGlobalLayoutListener {
}
第一行,我明白了。问题 。请帮我解决这个问题。
答案 0 :(得分:2)
签名错误。上下文不能为null来创建视图,而AttributeSet
可以为null。更改为
public class SequenceLayout(context: Context, attrs: AttributeSet?, defStyleAttr: Int)
答案 1 :(得分:0)
在科特林,Type
与Type?
的类型不同。第二个是Nullable。您不能为第一个分配null
值。
只要您期望Type?
,就可以使用Type
,但是无法以相反的方式使用它。
这样Kotlin确保无效安全。您可以在这里阅读更多内容: https://kotlinlang.org/docs/reference/null-safety.html
那么,如何解决您的问题呢?:
使用!!
运算符-该运算符会将可为null的类型转换为不可为null的类型,但是,如果value为null,则会得到NullPointerException
将函数的签名更改为使用兼容的类型。对于您来说,这看起来像是正确的方法。