You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java项目转Kotlin后报Parameter specified as non-null is null错误如何解决

报错原因
  • 该异常是Kotlin空安全校验触发的:错误栈明确指出menuInfo参数为null,但你的代码中onCreateContextMenu方法的menuInfo参数被声明为非空类型ContextMenuInfo,Kotlin会在方法执行前自动插入非空校验,传入null就会抛出该异常。
  • Android系统调用onCreateContextMenu时,menuInfo本身就是可空参数,在RecyclerView item创建上下文菜单的多数场景下,如果没有额外绑定自定义信息,系统就会传入null。Java没有空安全校验所以之前不会报错,转Kotlin时IDE自动生成的重写方法错误标记了该参数为非空,就触发了问题。
  • 报错行号不准属于Kotlin编译后字节码和源码映射偏移的常见现象,直接按报错指向的方法名定位即可,不用关注提示的行号。
解决方案

仅需修改onCreateContextMenu方法的menuInfo参数为可空类型即可,你的代码逻辑中并没有用到该参数,修改后完全不影响原有功能:

// 原错误写法
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo) {
    val delete = menu.add(Menu.NONE, 2, 2, "Delete")
    delete.setOnMenuItemClickListener(this)
}

// 修改后正确写法
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?) {
    val delete = menu.add(Menu.NONE, 2, 2, "Delete")
    delete.setOnMenuItemClickListener(this)
}

如果后续业务需要用到menuInfo,正常添加判空逻辑处理即可。

内容的提问来源于stack exchange,提问作者Vasant Raval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:06:10