类型不匹配:推断类型是FragmentActivity? 但是在将支持库更新到27.0.0时预期上下文
我已经更新了我的Kotlin项目以使用支持库27.0.0。 当我尝试获取片段中的活动上下文时,出现此错误:
> Type mismatch: inferred type is FragmentActivity? but Context was expected
假设activity
或context
在任何片段的生命周期方法( onAttach
和onDetach)
之间onDetach)
都不为null是安全的。 在这种情况下
context!!
似乎更好,因为如果它是空的,当它绝对不应该是空的,有些是非常错误的,你应该只是崩溃。
在异步回调当然检查为空。
为了我 ”!!” 从来没有和选择。
然后通过一切手段将它抽象出来。 这就是我在我的BaseFragment
类中BaseFragment
:
val context: Context @JvmName("getContext2") get() = getContext()!!
然后在使用地点:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) context // Context is *never* null here. } fun someCallbackMethod() { if (isAdded) { context // Context is also not null here. } else { // But it is null here. } }
无处不在的空检查与非空断言运算符一样糟糕。
这等于在添加可空性注释的支持库27之前会发生什么。 你可以在任何地方访问context
,如果它是空的和解除引用,它会崩溃。
你可以这样处理:
val context = activity context?.let { ...use the context... }
- 如何在Anko上使用selectableButtonBackground?
- 如何使用界面android在适配器中创建onclick事件?
- Gradle同步失败:无法GET'https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.1.3-2/kotlin-gradle-plugin-1.1.3-2.pom'
- 预期的类型布尔值:弹出式菜单的值
- 等同于在kotlin上实现java接口
- 在压缩AsyncTask中的位图时引发的异常不会停止执行
- kotlin是功能性的还是程序性的?
- RecyclerView.Adapter-错误:公共函数在Kotlin中公开它的内部返回类型
- Android Studio 3.0无法建议导入shl和shr在Kotlin