类型不匹配:推断的类型是上下文?但希望有上下文-Kotlin

时间:2019-03-20 09:15:36

标签: android kotlin

在将Kotlin版本更新为1.3.0之后,我遇到了上述问题

下面是代码,

     public class SequenceLayout(context: Context?, attrs: AttributeSet?, defStyleAttr: Int)
: FrameLayout(context, attrs, defStyleAttr), ViewTreeObserver.OnGlobalLayoutListener {

}

第一行,我明白了。问题 。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

签名错误。上下文不能为null来创建视图,而AttributeSet可以为null。更改为

 public class SequenceLayout(context: Context, attrs: AttributeSet?, defStyleAttr: Int)

答案 1 :(得分:0)

在科特林,TypeType?的类型不同。第二个是Nullable。您不能为第一个分配null值。

只要您期望Type?,就可以使用Type,但是无法以相反的方式使用它。

这样Kotlin确保无效安全。您可以在这里阅读更多内容: https://kotlinlang.org/docs/reference/null-safety.html

那么,如何解决您的问题呢?:

  • 使用!!运算符-该运算符会将可为null的类型转换为不可为null的类型,但是,如果value为null,则会得到NullPointerException

  • 将函数的签名更改为使用兼容的类型。对于您来说,这看起来像是正确的方法。