更新IDE后构建APK遇MenuItem.OnActionExpandListener相关错误求助
问题描述
更新IDE后构建APK时出现以下错误,未改动其他代码:
- 错误1:对象不是抽象类,且未实现
android.view.MenuItem.OnActionExpandListener中定义的抽象方法public abstract fun onMenuItemActionExpand(p0: MenuItem): Boolean - 错误2:
onMenuItemActionExpand 未重写任何方法 - 错误3:
onMenuItemActionCollapse 未重写任何方法
代码示例
menuItem.setOnActionExpandListener(object: MenuItem.OnActionExpandListener{ override fun onMenuItemActionExpand(item: MenuItem?): Boolean { parentLayout.visibility = View.GONE rv_listX.visibility = View.VISIBLE return true } override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { parentLayout.visibility = View.VISIBLE emptyX.visibility = View.GONE rv_listX.visibility = View.GONE return true } })
解决方案
问题根源是方法参数的可空性与接口定义不匹配:
MenuItem.OnActionExpandListener接口中的两个抽象方法,参数要求是非空的MenuItem,但代码里用了可空类型MenuItem?,编译器因此判定未正确实现接口方法,同时认为标注的override无效。
只需将方法参数的MenuItem?改为MenuItem即可解决所有错误,修正后的代码如下:
menuItem.setOnActionExpandListener(object: MenuItem.OnActionExpandListener{ override fun onMenuItemActionExpand(item: MenuItem): Boolean { parentLayout.visibility = View.GONE rv_listX.visibility = View.VISIBLE return true } override fun onMenuItemActionCollapse(item: MenuItem): Boolean { parentLayout.visibility = View.VISIBLE emptyX.visibility = View.GONE rv_listX.visibility = View.GONE return true } })
若问题仍存在,可同步项目Gradle依赖,确保Kotlin版本与Android SDK版本适配,排除IDE更新引发的依赖版本不一致问题。
内容的提问来源于stack exchange,提问作者Vitalis Nyandoro
相关产品推荐
相关产品推荐

