Kotlin使用runOnUiThread调用java.lang.Runnable出现lang未识别报错怎么办
报错原因及解决方案
- 核心触发原因:Kotlin 对
java.lang包下的通用类做了隐式导入适配,你显式写全java.lang.Runnable属于冗余写法,若项目中存在自定义的java包、lang类命名冲突,就会触发lang无法识别的报错。同时 Kotlin 原生支持 SAM 转换语法,根本不需要显式声明 Runnable 类。
正确实现写法
直接使用 Kotlin 简化语法即可,不需要加java.lang前缀:
this@MainActivity.runOnUiThread { // 此处写入要执行的UI操作逻辑 }
如果有特殊场景需要显式声明 Runnable,直接写类名即可:
this@MainActivity.runOnUiThread(Runnable { // 此处写入要执行的UI操作逻辑 })
异常排查方案
如果修改写法后仍有报错,执行以下操作排查:
- 检查项目代码中是否存在自定义包名包含
java/lang、或者自定义类命名为Runnable/lang的情况,这类命名冲突会导致编译器识别异常 - 清理IDE缓存:在Android Studio中依次点击
File -> Invalidate Caches...,勾选对应清理选项后重启IDE即可
内容的提问来源于stack exchange,提问作者Laba Diena
相关产品推荐
相关产品推荐

