为什么 View 上的 `onDraw()` 方法接收可为 nullable canvas
why `onDraw()` method on View receives nullable canvas
在使用自定义视图时,我多次重写 onDraw(canvas:Canvas?)
方法,但我不明白为什么这个方法得到一个可为 null 的 Canvas
,视图不应该总是有一个 canvas 什么时候画画?。
我还断言它不是 null 并且它有效,但我不想冒这个风险,可能在某个时候它会变成 null。
所以首先我想了解在什么情况下该参数可以为空?
或者它只是从 java 到 kotlin 的转换过程,我可以安全地从参数中删除 ?
吗?
谢谢
因为AndroidAPI原来写在Java。在 Java 中,没有不可为 null 的值。由于 Kotlin 需要与 Java API 兼容,因此它需要是一个可为 null 的参数。
如果你真的得到一个空值,那是框架中的一个错误。我从未见过它发生。我认为你只要让它抛出 NullPointerException 就可以了,因为你不应该看到它。
郑重声明,即使 Android 框架也不会检查该参数是否为 null - 如果您传入 null,TextView.onDraw 将会崩溃。
在使用自定义视图时,我多次重写 onDraw(canvas:Canvas?)
方法,但我不明白为什么这个方法得到一个可为 null 的 Canvas
,视图不应该总是有一个 canvas 什么时候画画?。
我还断言它不是 null 并且它有效,但我不想冒这个风险,可能在某个时候它会变成 null。
所以首先我想了解在什么情况下该参数可以为空?
或者它只是从 java 到 kotlin 的转换过程,我可以安全地从参数中删除 ?
吗?
谢谢
因为AndroidAPI原来写在Java。在 Java 中,没有不可为 null 的值。由于 Kotlin 需要与 Java API 兼容,因此它需要是一个可为 null 的参数。
如果你真的得到一个空值,那是框架中的一个错误。我从未见过它发生。我认为你只要让它抛出 NullPointerException 就可以了,因为你不应该看到它。
郑重声明,即使 Android 框架也不会检查该参数是否为 null - 如果您传入 null,TextView.onDraw 将会崩溃。