Hen*_*que 2 java android kotlin kotlin-android-extensions kotlin-null-safety
我是Kotlin的新手,并尝试将我们现有代码库中的众多Android Util方法之一转换为Kotlin扩展函数.
这是Kotlin代码:
fun Activity?.isAlive(): Boolean {
return !(this?.isFinishing ?: false)
}
Run Code Online (Sandbox Code Playgroud)
这意味着相当于这个Java方法:
public static boolean isAlive(Activity activity) {
return activity != null && !activity.isFinishing();
}
Run Code Online (Sandbox Code Playgroud)
不过,我仍然获得NPEs在科特林代码每当Activity为null.关于我哪里出错的任何想法?
我想你的NPE不是在isAlive()函数中,而是在Activity引用之后的某个地方.这可能是由以下事实导致.isAlive()返回true的null接收器.
这是因为如果接收器null,this?.isFinishing ?: false选择合适的分支false,从而!(this?.isFinishing ?: false)为true.
尝试以任一方式更改您的功能,以便它false在null接收器上返回,例如:
fun Activity?.isAlive(): Boolean = !(this?.isFinishing ?: true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |