Android Kotlin Fragment报错:navArgs无法作为函数调用,找不到invoke()方法
核心原因
你遇到的问题本质是把生成的Args数据类当成可调用函数来用了,这类由Navigation组件自动生成的Args类是普通数据类,没有invoke()方法,自然不能用()调用。
具体解决办法
修正navArgs的使用方式
如果你用Kotlin委托来获取参数,正确写法是:private val args: YourFragmentArgsName by navArgs()不要写成
val args = navArgs()或者val args = YourFragmentArgsName(),前者是误用委托的调用方式,后者是直接实例化Args类但没传入Bundle,都会触发报错。强制重新生成Args代码
有时候Android Studio的注解处理器没同步生成代码,执行以下操作:- 点击
Build > Clean Project,接着执行Build > Rebuild Project - 若还是不行,选择
File > Invalidate Caches...,勾选Invalidate and Restart重启IDE,再重新构建项目
- 点击
检查导入包是否正确
确保导入的是Navigation组件的正确委托:import androidx.navigation.navArgs避免导入其他同名的navArgs函数。
替代方案:手动解析参数
要是委托方式始终有问题,可以直接从Fragment的Arguments中解析:val args = YourFragmentArgsName.fromBundle(requireArguments())
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

